php给变量取个简短且无歧义的名字

作者:袖梨 2022-06-24

代码审计至少包含两个方面首先要确定代码的目的或功能;另外就是检查代码的可读性,即是否更利于理解和维护。
或许你审计过很多代码,太长的变量名确实很让人抓狂。不仅影响了代码的清晰度,而且过长的变量让你的代码难以扫描,迫使更多的换行。
如何给变量或方法取个好名字
首先你要知道这个命名想要表达什么;另外你应该知道这个命名跟什么是无关的。 除此之外,所有的命名中所有的字符串都是多余的。
(1)省略变量的参数类型
如果是静态类型的语言,你是会知道变量的类型或方法返回值类型,再在命名上加上类型就是多余了

// Bad:
String nameString;
DockableModelessWindow dockableModelessWindow;
 
// Better:
String name;
DockableModelessWindow window;

可用复数代替某些类型
// Bad:
List holidayDateList;
Map employeeRoleHashMap;
 
// Better:
List holidays;
Map employeeRoles;

方法名不应该描述参数或其类型
// Bad:
mergeTableCells(List cells)
sortEventsUsingComparator(List events,
    Comparator comparator)
 
// Better:
merge(List cells)
sort(List events, Comparator comparator)

(2)省略命名中的歧义描述
当你看到这个变量名recentlyUpdatedAnnualSalesBid你是不是在想
有没有年度销售报价不是最近的?
最近的年销售报加有没有没更新的?
有没有最近更新的销售报价不是年度的?
...

请去掉这些无关的描述吧,何况你可以加注释嘛。
// Bad:
finalBattleMostDangerousBossMonster;
weaklingFirstEncounterMonster;
 
// Better:
boss;
firstMonster;

(3)去掉上下文已知的内容
比如说当class描述了某个内容,方法名就不需要再重复了
// Bad:
class AnnualHolidaySale {
  int _annualSaleRebate;
  void promoteHolidaySale() { ... }
}
 
// Better:
class AnnualHolidaySale {
  int _rebate;
  void promote() { ... }
}

(4)省略掉无意义的信息
很多人喜欢命名基于产品的很多商业名词,比如data, state, amount, value, manager,engine, object, entity, and instance.这些词是否存在没有意义。
看下面一个联系
class DeliciousBelgianWaffleObject {
    void garnishDeliciousBelgianWaffle(
        List strawberries) { ... }
}

简化成这样是不是很爽
class Waffle {
  void garnish(List strawberries) { ... }
}

相关文章

精彩推荐