Clean Code读书笔记(1)---有意义的命名

名副其实

选个好名字要花费时间,但省下来的时间比花掉的多。注意命名,而且一旦发现有更好地名称,就换掉旧的。名字一定需要符合其本意。

举例:

要表达消逝的时间,以日记。不好的命名: 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作为前缀。

 不要添加没用的语境

只要短名称足够清楚,就要比长名称好。不要给名称添加不必要的语境。保持名称的精炼。

posted @ 2020-12-27 17:39  self.refactoring  阅读(73)  评论(0编辑  收藏  举报