代码易读性探索总结
写在前面:
代码的易读性,个人认为是非常重要,受团队重视但是不能始终贯彻的.虽然面向对象已经成为了不二主流,在PHP的大世界里,在本人遇到的各种PHPer中,面向过程的写法仍比比皆是.维护成本也各不相同.
下面是本人在工作中的一些总结和想法,如有看的不舒服的,换个舒服的姿势.
命名
命名规范是编码的基本,下划线和驼峰只是形式,实质还是要看想要这个名字做什么.
1.确定使用动词性质还是名词性质
2.尽量将其具体化
3.勤于修改
eg1. userName VS userAttribute
eg2. setName VS manageName
eg3. 王建国 VS 王建设
eg4. getUserName VS getUserNameByUid
注释
无效注释一定要删除!害人害己.
逻辑注释一定要详细!
代码修改后,注释一定要改!
没有注释,别人还能一眼看明白,是真的厉害!
代码生命周期
1.局部变量声明和使用尽量靠近,不要跨过山河大海,穿过人山人海
$userLogObjectId = "string"; $userLogForCache = array(...); $userLogForStorage = array(...); if(!createUserLogForCache($userLogObjectId, $userLogForCache)) return false; if(!createUserLogForStorage($userLogObjectId, $userLogForStorage)) return false;
vs
$userLogObjectId = "string"; $userLogForCache = array(...); if(!createUserLogForCache($userLogObjectId, $userLogForCache)) return false; $userLogForStorage = array(...); if(!createUserLogForStorage($userLogObjectId, $userLogForStorage)) return false;
2.方法调用尽量紧跟其后
public function setInputRules(){...} public function getInputValues(){...} public function main(){ $this->setInputRules(); $this->getInputValues(); }
vs
public function main(){ $this->setInputRules(); $this->getInputValues(); } private function setInputRules(){...} private function getInputValues(){...}
3.成员变量谨慎使用:欲说还休
4.常量谨慎使用:const vs define
访问权限
权限是基础的,但是真正做到权限管理的很少,基本上都是一溜的public.
虽然代码一样跑的畅通无阻,管理一下,起码看起来更安全和更专(装)业(X)一些.
关键是其他人调用的时候不会感到一脸懵逼,也不会滥调用.看到自己精心写出来的代码被随意滥用,很不爽的啊!
而且对于编写的类结构也更清晰,什么是开放的,什么是私有的,什么是继承的.
类间关系
1.面向接口编程,而不是面向实现编程
2.组合优于继承
3.依赖注入
4.依赖反转
5.等等...
对自己编写的代码不断进行优化重构,总会发现新的想法和技巧
设计模式
很少有东西是可以不懂就拿来使用的.
设计模式是一个启示性工具,在代码解耦性和扩展性方面很强大.
选用合适的模式,结合自身需求,进行整合和修改,不断优化重构,才能达到理想的效果.
测试
曾经看过一句话:没有测试的代码,就好像在钢丝绳上跳舞.高空,没有安全带的那种.随时可能被摔死,而且死的很惨.
虽然TDD提出好久了,各流行框架也加入了PHPUnit,但是现实是骨感的.
只想说:测试非常非常重要!能写出好的测试非常非常重要!能加就加!能早加就早加!
写在后面:
看的舒服,其实就是对代码不断优化重构的表现.是对代码精益求精的体现.
还没有见过一次性写完代码不进行修改的大牛.期待!
业精于勤,希望自身也能通过自己的总结,激励自己,成为一个勤奋的人!