Case3:整形变量为啥要用is开头
代码示例:
private int isFirstEnter = 0;
大脑活动:
为什么“is”开头的变量却声明成整形?到底是要计数还是判断真假呢?
代码跟读:
isFirstEnter < 1 做第一次进入的逻辑
修改建议:
private boolean isFirstEnter = true;
Case4:开关作用反掉啦
代码示例:
.... if (InfoFlowOrangeConfig.getBooleanValue(POST_DELAYED_HIDE_COVER_VIEW_ENABLE, true)) { hideCoverImageView(); } else { delayedHideCoverImageView(); }
大脑活动:
为什么开关名为“delay....”为“true”的时候,走的不是delay逻辑,那开关要怎么发?容我多看几遍,是不是最近没休息好所以看岔了。
代码跟读:
反复看了几遍,确实是开关命名和实际操作完全相反,开关名意为“延迟隐藏封面视图”,执行的却是“立即隐藏封面视图”。
修改建议:
.... if (InfoFlowOrangeConfig.getBooleanValue(IMMEDIATELY_HIDE_COVER_VIEW_ENABLE, true)) { hideCoverImageView(); } else { delayedHideCoverImageView(); }
3、做有意义的区分
如果单纯只是为了区分两个名称不能一样,就使用就使用诸如数字,字母来做区分的话,那似乎是毫无意义的区分。
3.1 避免在名字中使用数字
case1: 来自包名的暴击
问题示例:
以下是首页客户端的工程目录节选,数字化的包名:recommend、recommend2、recommend3、recommend4
大脑活动:
2、3、4难道是因为首页历史包袱太沉重,推荐迭代的版本实在太多导致Old、New单词不够用所以用数字来代替新旧4个历史阶段的版本吗?
代码跟读:
- recommend:推荐的公共工具和模块;
- recommend2:收藏夹场景的推荐实现;
- recommend3:首页场景的推荐实现;
- recommend4:购后场景的推荐实现;
修改建议:
这里暂时只讨论如何把数字替换成有意义的命名
3.2 避免使用具有相似含义的名字
case1:同一个类下的“刷新7剑客”
代码示例:
大脑活动:
为什么一个Adapter类对外有七个刷新数据的接口?
"refreshData()" 和 “speedRefreshData()” 是什么区别?
“mainRefreshData()” + "refreshDeltaData()" =“mainRefreshDeltaData()” ?是一个拆分组合的关系吗?
我应该在何总场景下如何正确的使用refresh,我在哪,我在做什么?
代码跟读:
大部分refresh代码线上并不会被调用。阅读和调试下来,实际还在生效的方法只有一个:“gatewayRefreshData()”。
修改建议:
实际上这已经不是一个单纯优化命名可以解决的问题,无论叫的多具体,面对7个刷新接口都会懵圈。期望在方法声明期间,作者多体量后来的阅读者和维护者,及时的调整代码。
后来者可以从实际出发去假存真,做减法干掉其它无用的6个刷新方法保留一个刷新接口。