选个好名字要花费时间,但省下来的时间比花掉的多。注意命名,而且一旦发现有更好地名称,就换掉旧的。名字一定需要符合其本意。
举例:
要表达消逝的时间,以日记。不好的命名: int d; 好的命名: int elapsedTimeInDays
获取订单项Id的韩函数:
不好的命名:
List<int> GetOrderItems(Order order) { List<int> list1 = new List<int>(); foreach(var item in order.Items) { list1.Add(item.Id) } return list1; }
好的命名:
List<int> GetOrderItemIds(Order order) { List<int> ids = new List<int>(); foreach(var item in order.Items) { ids.Add(item.Id) } return ids; }
应该避免在名字中使用会产生误导的词。
举例:
假如要表示一组账户: 不好的名字: accountList(会误导读者以为是List数据类型), 好的名字: accounts
当要区分两个表示相同概念的事物时,需要做到有意义的区分。而不是仅仅是让编译器能通过。
举例:
要写一个将数据从一个数组拷贝到另一个数组的函数时:
不好的命名
public void copyNumber(List<int> numbers1, List<int> numbers2) { foreach(int item in numbers1) { numbers2.Add(item); } } // numbers1和numbers2不是有意义的区分,仅仅是让编译通过而已。
好的命名
public void copyNumber(List<int> sourceNumbers, List<int> destinationNumbers) { foreach(int item in sourceNumbers) { destinationNumbers.Add(item); } }
需要使用读得出来的英语单词进行命名。
比如我要表示一个更新时间变量。不好的命名:DateTime lastUpdatemdhms; 好的命名:DateTime lastUpdateTime.
对于每个抽象概念,我们可以对应到一个特定的词。然后在整个系统中各个模块中都使用这个词,保持统一。比如获取数据都用fetch或者get作为前缀。
不要添加没用的语境
只要短名称足够清楚,就要比长名称好。不要给名称添加不必要的语境。保持名称的精炼。