设为首页 收藏本站
查看: 482|回复: 0

[经验分享] php程序员陋习

[复制链接]

尚未签到

发表于 2017-3-27 08:03:30 | 显示全部楼层 |阅读模式
Reinhold Weber 提出PHP程序员的40点陋习.(本E问只写了一部分内容,译者找到原版翻译,以下是完全版)
       1不写注释
       2不使用可以提高生产效率的IDE工具
       3不使用版本控制
       4不按照编程规范写代码
       5不使用统一的方法
       6编码前不去思考和计划
       7在执行sql前不执行编码和安全检测
       8不使用测试驱动开发
       9编码时不打开自动报错(error_reporting)
       10不使用一种好的调试工具
       11不重构你的代码(refactor)
       12不采用MVC这样的分层结构
       13不知道以下等等概念:KISS,DRY,MVC,OOP,REST
       14在函数或者类里直接用print或者echo输出东西而不是返回(return)
       15不使用也不去了解单元测试
       16返回HTMl而不是data,strings,objects等类型
       17糟糕的代码和配置参数(hard code messages and configuration parameters)
       18不优化sql查询
       19不使用__autoload
       20不支持自动错误操作(应该是智能纠错)
       21使用$_GET替代$_POST去进行危险的参数传递(记得这40条都是错误的东西)
       22不知道怎样使用正则表达式
       23从未听说过sql注入和跨站脚本(安全方面,应该了解下这两个东西的英文:sql injection,cross-site scripting)
       24不支持简单配置,传递参数给类的构造函数,set/get方法,定义常量
       25不能理解OOP的优缺点
       26无论要做的东西有多小,都使用OOP
       27认为做可复用的软件就是OOP
       28不使用缺省值(don't choose intelligent defaults)
       29不使用单一配置文件
       30不想让别人看到代码,却使用.inc替换掉.php
       31不使用数据库抽象层(持久层)
       32开发时不DRY(Dont repeat yourself). (就是总开发重复的东西)
       33不开发可以重复使用的类或者方法.
       34不使用抽象类或者接口类,继承,多态,封装.
       35不使用已有的设计模式优化你的程序.
       36不允许使用者定义基础目录(这点好象PHP不太适合,毕竟不是基于操作系统的开发)
       37错误的使用命名空间,使用大家都普遍使用的单词作为前缀.(这样以后别人使用会造成冲突.,例如自己定义一个function 叫 array_push())
       38使用数据库时不使用表前缀(这个很重要...)
       39不使用或者使用一个陌生的模板引擎(方便团队开发,大家要使用常见的模板)
       40不去看PHP的框架(大多数框架中都包含优秀的代码和先进的概念.值得我们学习)
其中译者还有很多做不到的,还需要努力!
 
以下是原文:
 
   1. don't comment your code properly with something like phpDoc
 
   2. don't see the need and/or benefits of a good programming IDE like Zend Studio or Eclipse PDT
 
   3. have never used some form of version control like Subclipse
 
   4. don't adopt some coding & naming standards and general conventions and stick to to them at least throughout the project
 
   5. don't use a consistent methodology
 
   6. don't escape and/or validate properly input or sql queries
 
   7. don't plan your application thoroughly before starting to code
 
   8. don't use test-driven development
 
   9. don't program & test with error reporting on
 
  10. don't see the benefits of a debugger
 
  11. don't refactor your code
 
  12. don't keep the different layers seperated using something like MVC
 
  13. don't know what these stand for: KISS, DRY, MVC, OOP, REST
 
  14. don't return content but echo or print it from your functions or classes
 
  15. have never seen the advantage of unit tests or testing in general
 
  16. return HTML, not data, strings, or objects.
 
  17. hard code messages and configuration parameters
 
  18. don't optimize your sql queries
 
  19. don't use __autoload
 
  20. don't allow intelligent error handling
 
  21. use $_GET instead of $_POST for any destructive actions
 
  22. don't know how to use regular expressions
 
  23. you've never heard of sql injection or cross-site scripting
 
  24. don't allow simple configuration, can be parameters passed to a class’s constructor, set/get methods called later, or constants defined at a runtime.
 
  25. don't understand the benefits and limitations of Object Oriented Programming
 
  26. misuse OOP / everything you write , no matter how small is OOP
 
  27. you think reusable software equals/requires your code to be OOP
 
  28. don't choose intelligent defaults
 
  29. don't have one single configuration file
 
  30. don't want the file contents to be seen, but give it a .inc extension instead of .php
 
  31. don't use a database abstraction layer
 
  32. don't keep it DRY, Don't repeat yourself. If you have to copy and paste or duplicate something your design may be off.
 
  33. don't make a function/class/method do just one thing and don't make them interact.
 
  34. don't try to take advantage of OOP specific features like abstract/interface classes, inheritage polymorphism & access modifiers.
 
  35. don't optimize your application design with established design patterns
 
  36. don't allow your user to define a base directory if you have multiple files and/or directories
 
  37. pollute the global namespace, one option is to prefix the functions in your library with a common string
 
  38. don't allow a table prefix when using database tables
 
  39. use a separate template engine
 
  40. don't take a look at established php frameworks for inspiration, most of them have advanced web dev concepts and good code
 
 
 
 
 
 
Reinhold Weber has put together a list of signs (40 in all on his "programming list of shame") that you're a lousy PHP programmer. Here's a sampling:
don't see the need and/or benefits of a good programming IDE like Zend Studio or Eclipse PDT 
have never used some form of version control like Subclipse 
don't use a consistent methodology 
don't use test-driven development 
don't return content but echo or print it from your functions or classes 
return HTML, not data, strings, or objects. 
don't allow intelligent error handling 
you think reusable software equals/requires your code to be OOP 
Now granted, some of them are a bit more high level than others, but if you're not headed towards a lot of these, you might change paths, hop out of that comfort zone and branch out into the community and the language a little bit more.
 

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-355829-1-1.html 上篇帖子: PHP图片自动裁切 下篇帖子: PHP实践之路(五)PHP中的运算符
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表