技术开发 频道

软件开发误区:代码命名规则的是与非

  命名要有合适的长度

  在高级编程语言中,变量名的长度通常不太限制。变量名几乎可以任何长度。虽然如此,这也可能使代码变得闹心。

  不好的代码:

var theCustomersListWithAllCustomersIncludedWithoutFilter;
var list;

  好的名称应该只含有必要的词汇来表达一个概念。任何不必要的字词都会使名称变长、难于理解。名称越短越好,前提是能在上下文中表达完整的意思(下订单这个场景中,“customersInOrder” 要比 “list” 好)。

  清楚的代码:

var allCustomers;
var customersInOrder;

  命名时编码规范保持一致,让规范帮助理解代码

  所有的编程技术(语言)都有自己的“风格”,叫做编码规范。程序员应该在写代码时遵循这些习惯,因为其他的程序员也知道这些,并按这种风格编写。下面我们看一个没有明显规范的不好的代码例子。下面的这段代码没有遵循很好的已知的“编码规范”(比如PascalCase, camelCase, Hungarian规范)。更糟糕的是,这有一个毫无意义的bool变量“change”。这是个动词(用来描述动作),但这里的bool值是来描述一个状态,所以,这里应该用一个形容词更合适。

  不好的代码:

const int maxcount = 1
bool change
= true
public interface Repository
private string NAME
public class personaddress
void getallorders()

  一段代码,只看它的一部分,你就应该直接明白它是什么类型,只需要看它的命名方法。

  例如:你看到了“_name”,你就能知道它是个私有变量。你应该在任何地方都利用这种表示方法,没有例外情况。

  清楚的代码:

const int MAXCOUNT = 1
bool isChanged
= true
public interface IRepository
private string _name
public class PersonAddress
void GetAllOrders()

  命名时相同的概念用相同的词表达

  定义概念很难。在软件开发过程中,很多时间都花在分析业务场景、思考正确的定义里面所有的元素。这些概念永远都是让程序员头痛的事。

  不好的代码:

//1.
void LoadSingleData()
void FetchDataFiltered()
Void GetAllData()
//2.
void SetDataToView();
void SetObjectValue(
int value)

  首先:

  代码的作者试图表达“get the data”的概念,他使用了多个词“load”,“fetch”,“get”。一个概念只用一个词表达就行了(在同一个场景中)。

  第二:

  “set”这个词用在了2个概念里:第一是“data loading to view”,第二个是“setting a value of object”。这是两个不同的概念,你应该使用不同的词。

  清楚的代码:

//1.
void GetSingleData()
void GetDataFiltered()
Void GetAllData()
//2.
void LoadDataToView();
void SetObjectValue(
int value)
0
相关文章