· 避免使用大文件。如果一个文件里的代码超过300~400行,必须考虑将代码分开到不同类中。
· 避免写太长的方法。一个典型的方法代码在1~25行之间。如果一个方法发代码超过25行,应该考虑将其分解为不同的方法。
· 方法名需能看出它作什么。别使用会引起误解的名字。如果名字一目了然,就无需用文档来解释方法的功能了。
好:
void SavePhoneNumber ( string phoneNumber )
{
// Save the phone number.
}
不好:
// This method will save the phone number.
void SaveData ( string phoneNumber )
{
// Save the phone number.
}
· 一个方法只完成一个任务。不要把多个任务组合到一个方法中,即使那些任务非常小。
好:
// Save the address.
SaveAddress ( address );
// Send an email to the supervisor to inform that the address is updated.
SendEmail ( address, email );
void SaveAddress ( string address )
{
// Save the address.
// ...
}
void SendEmail ( string address, string email )
{
// Send an email to inform the supervisor that the address is changed.
// ...
}
不好:
// Save address and send an email to the supervisor to inform that the address is updated.
SaveAddress ( address, email );
void SaveAddress ( string address, string email )
{
// Job 1.
// Save the address.
// ...
// Job 2.
// Send an email to inform the supervisor that the address is changed.
// ...
}
· 使用C# 或 VB.NET的特有类型,而不是System命名空间中定义的别名类型。
好:
int age;
string name;
object contactInfo;
不好:
Int16 age;
String name;
Object contactInfo;
· 别在程序中使用固定数值,用常量代替。
· 别用字符串常数。用资源文件。
· 避免使用很多成员变量。声明局部变量,并传递给方法。不要在方法间共享成员变量。如果在几个方法间共享一个成员变量,那就很难知道是哪个方法在什么时候修改了它的值。
· 必要时使用enum 。别用数字或字符串来指示离散值。
好:
enum MailType
{
Html,
PlainText,
Attachment
}
void SendMail (string message, MailType mailType)
{
switch ( mailType )
{
case MailType.Html:
// Do something
break;
case MailType.PlainText:
// Do something
break;
case MailType.Attachment:
// Do something
break;
default:
// Do something
break;
}
}
不好:
void SendMail (string message, string mailType)
{
switch ( mailType )
{
case "Html":
// Do something
break;
case "PlainText":
// Do something
break;
case "Attachment":
// Do something
break;
default:
// Do something
break;
}
}
· 别把成员变量声明为 public 或 protected。都声明为 private 而使用 public/protected 的Properties.
· 不在代码中使用具体的路径和驱动器名。使用相对路径,并使路径可编程。
· 永远别设想你的代码是在“C:”盘运行。你不会知道,一些用户在网络或“Z:”盘运行程序。
· 应用程序启动时作些“自检”并确保所需文件和附件在指定的位置。必要时检查数据库连接。出现任何问题给用户一个友好的提示。
· 如果需要的配置文件找不到,应用程序需能自己创建使用默认值的一份。
· 如果在配置文件中发现错误值,应用程序要抛出错误,给出提示消息告诉用户正确值。
· 错误消息需能帮助用户解决问题。永远别用象"应用程序出错", "发现一个错误" 等错误消息。而应给出象 "更新数据库失败。请确保登陆id和密码正确。" 的具体消息。
· 显示错误消息时,除了说哪里错了,还应提示用户如何解决问题。不要用象 "更新数据库失败。"这样的,要提示用户怎么做:"更新数据库失败。请确保登陆id和密码正确。"
· 显示给用户的消息要简短而友好。但要把所有可能的信息都记录下来,以助诊断问题。
注释
· 别每行代码,每个声明的变量都做注释。
· 在需要的地方注释。可读性强的代码需要很少的注释。如果所有的变量和方法的命名都很有意义,会使代码可读性很强并无需太多注释。
· 行数不多的注释会使代码看起来优雅。但如果代码不清晰,可读性差,那就糟糕。
· 如果应为某种原因使用了复杂艰涩的原理,为程序配备良好的文档和重分的注释。
· 对一个数值变量采用不是0,-1等的数值初始化,给出选择该值的理由。
· 简言之,要写清晰,可读的代码以致无须什么注释就能理解。
· 对注释做拼写检查,保证语法和标点符号的正确使用。
|
数据类型 |
数据类型简写 |
标准命名举例 |
|
Array |
arr |
arrShoppingList |
| Boolean | bln | blnIsPostBack |
| Byte | byt | bytPixelValue |
| Char | chr | chrDelimiter |
| DateTime | dtm | dtmStartDate |
| Decimal | dec | decAverageHeight |
| Double | dbl | dblSizeofUniverse |
| Integer | int | intRowCounter |
| Long |
lng |
lngBillGatesIncome |
| Object | obj | objReturnValue |
| Short | shr | shrAverage |
| Single | sng | sngMaximum |
| String |
str | strFirstName |
| 控件类型 | 缩写 | 示例 |
| Animated button | ani | aniMailBox |
| Button | btn | |
| Check box | chk | chkReadOnly |
| ColorDialog | clrdlg | |
| Combobox,drop-down list box | cbo | cboEnglish |
| Communications | com | comFax |
| ContextMenu | ctxmnu | |
| Control(used within procedures when the specific type is unknown) | ctr | ctrCurrent |
| CrystalReportViewer | crvw | |
| Data | dat | datBiblio |
| Data grid | dgd | dgdTitles |
| Data list | dbl | dblPublisher |
| Data repeater | drp | drpLocation |
| Data-bound combo box | dbcbo | dbcboLanguage |
| Data-bound grid | dbgrd | dbgrdQueryResult |
| Data-bound list box | dblst | dblstJobType |
| Datetime picker | dtp | dtpPublished |
| Directory list box | dir | dirSource |
| DomainUpDown | dupd | |
| Drive list box | drv | drvTarget |
| ErrorProvider | err | |
| File list box | fil | filSource |
| Flat scroll bar | fsb | fsbMove |
| FontDialog | fntdlg | |
| Form | frm | frmEntry |
| Frame | fra | fraLanguage |
| Gauge | gau | gauStatus |
| Graph | gra | graRevenue |
| Grid | grd | grdPrices |
| GroupBox | grp | |
| HelpProvider | hlp | |
| Hierarchical flexgrid | flex | flexOrders |
| HScroll bar | hsb | hsbVolume |
| Image | img | imgIcon |
| Image combo | imgcbo | imgcboProduct |
| ImageList | ils | ilsAllIcons |
| Label | lbl | lblHelpMessage |
| Line | lin | linVertical |
| LinkLabel | lnk | |
| List box | lst | lstPolicyCodes |
| ListView | lvw | lvwHeadings |
| MAPI message | mpm | mpmSentMessage |
| MAPI session | mps | mpsSession |
| MCI | mci | mciVideo |
| Menu | mnu | mnuFileOpen |
| Month view | mvw | mvwPeriod |
| MonthCalendar | mcl | |
| MS Chart | ch | chSalesbyRegion |
| MS Flex grid | msg | msgClients |
| MS Tab | mst | mstFirst |
| NotifyIcon | nti | |
| NumericUpDown | nupd | |
| OLE container | ole | oleWorksheet |
| OpenFileDialog | ofdlg | |
| PageSetUpDialog | psdlg | |
| Picture box | pic | picVGA |
| Picture clip | clp | clpToolbar |
| PrintDocument | prndoc | |
| PrintPreviewControl | ppctl | |
| PrintPreviewDialog | ppdlg | |
| ProgressBar | prg | prgLoadFile |
| RadioButton | rbtn | |
| Remote Data | rd | rdTitles |
| RichTextBox | rtf | rtfReport |
| SaveFileDialog | sfdlg | |
| Shape | shp | shpCircle |
| Slider | sld | sldScale |
| Spin | spn | spnPages |
| Splitter | spt | |
| StatusBar | sta | staDateTime |
| SysInfo | sys | sysMonitor |
| TabContrl | tab | |
| TabStrip | tab | tabOptions |
| Text box | txt | txtLastName |
| Timer | tmr | tmrAlarm |
| Toolbar | tlb | tlbActions |
| TrackBar | trb | |
| TreeView | tre | treOrganization |
| UpDown | upd | updDirection |
| VScroll bar | vsb | vsbRate |
ADO.NET 命名规范
| 数据类型 | 数据类型简写 | 标准命名举例 |
| Connection | con | conNorthwind |
| Command | cmd | cmdReturnProducts |
| Parameter | parm | parmProductID |
| DataAdapter | dad | dadProducts |
| DataReader | dtr | dtrProducts |
| DataSet | dst | dstNorthWind |
| DataTable | dtbl | dtblProduct |
| DataRow | drow | drowRow98 |
| DataColumn | dcol | dcolProductID |
| DataRelation | drel | drelMasterDetail |
| DataView | dvw | dvwFilteredProducts |
| 数据类型 | 数据类型简写 | 标准命名举例 |
| Label | lbl | lblMessage |
| LinkLabel | llbl | llblToday |
| Button | btn | btnSave |
| TextBox | txt | txtName |
| MainMenu | mmnu | mmnuFile |
| CheckBox | chk | chkStock |
| RadioButton | rbtn | rbtnSelected |
| GroupBox | gbx | gbxMain |
| PictureBox | pic | picImage |
| Panel | pnl | pnlBody |
| DataGrid | dgrd | dgrdView |
| ListBox | lst | lstProducts |
| CheckedListBox | clst | clstChecked |
| ComboBox | cbo | cboMenu |
| ListView | lvw | lvwBrowser |
| TreeView | tvw | tvwType |
| TabControl | tctl | tctlSelected |
| DateTimePicker | dtp | dtpStartDate |
| HscrollBar | hsb | hsbImage |
| VscrollBar | vsb | vsbImage |
| Timer | tmr | tmrCount |
| ImageList | ilst | ilstImage |
| ToolBar | tlb | tlbManage |
| StatusBar | stb | stbFootPrint |
| OpenFileDialog | odlg | odlgFile |
| SaveFileDialog | sdlg | sdlgSave |
| FoldBrowserDialog | fbdlg | fgdlgBrowser |
| FontDialog | fdlg | fdlgFoot |
| ColorDialog | cdlg | cdlgColor |
| PrintDialog | pdlg | pdlgPrint |
| 数据类型 | 数据类型简写 | 标准命名举例 |
| AdRotator | adrt | Example |
| Button | btn | btnSubmit |
| Calendar | cal | calMettingDates |
| CheckBox | chk | chkBlue |
| CheckBoxList | chkl | chklFavColors |
| CompareValidator | valc | valcValidAge |
| CustomValidator | valx | valxDBCheck |
| DataGrid | dgrd | dgrdTitles |
| DataList | dlst | dlstTitles |
| DropDownList | drop | dropCountries |
| HyperLink | lnk | lnkDetails |
| Image | img | imgAuntBetty |
| ImageButton | ibtn | ibtnSubmit |
| Label | lbl | lblResults |
| LinkButton | lbtn | lbtnSubmit |
| ListBox | lst | lstCountries |
| Panel | pnl | pnlForm2 |
| PlaceHolder | plh | plhFormContents |
| RadioButton | rad | radFemale |
| RadioButtonList | radl | radlGender |
| RangeValidator | valg | valgAge |
| RegularExpression | vale | valeEmail_Validator |
| Repeater | rpt | rptQueryResults |
| RequiredFieldValidator | valr | valrFirstName |
| Table | tbl | tblCountryCodes |
| TableCell | tblc | tblcGermany |
| TableRow | tblr | tblrCountry |
| TextBox | txt | txtFirstName |
| ValidationSummary | vals | valsFormErrors |
| XML | xmlc | xmlcTransformResults |
本文提供了一系列实用的编程建议,包括合理划分文件与方法、明确方法命名、避免代码冗余及提高可读性等,有助于开发者写出更高效、清晰的代码。
3089

被折叠的 条评论
为什么被折叠?



