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.
相关推荐
PHP 程序员面试自我介绍 PHP 程序员面试自我介绍是一份非常重要的文件,对于 PHP 程序员来说,如何进行自我介绍是非常关键的。从文件中,我们可以看到,PHP 程序员的自我介绍主要包括五个方面:职业道德和工作态度...
php程序员工具箱是迄今为止全网唯一款php程序员的专属工具箱,集合了php环境搭建、在线小工具、原生手册、文字与视频教程、问答社区等,可以更好的帮助和服务广大php初学者,需要此款工具的朋友们欢迎前来下载使用。...
不管是新手还是高手。php程序员必备手册。
PHP程序员简历模板 iOS程序员简历模板 Android程序员简历模板 Web前端程序员简历模板 Java程序员简历模板 C/C++程序员简历模板 NodeJS程序员简历模板 架构师简历模板 通用程序员简历模板PHP程序员简历模板 iOS程序员...
• 10年+ PHP开发经验,LazyPHP&TeamToy作者 • 前新浪云产品经理,曾负责SinaAppEngine的产品工作 • 两度创业,08年曾创建过自己的软件工作室,2014年创建互联网人才拍卖网站 JobDeer.com • 什么是职业规划 • ...
初级PHP程序员笔试题——结合算法的思想!
关于初级PHP程序员 面试题 适合初学者和找工作的人群,大量的关于初级程序员面试和笔试题。
史上最经典实用的PHP程序员经典面试、笔试题目解析(上)
PHP程序员面试自我介绍范文 通过分析提供的文件信息,可以总结出以下知识点: 1. PHP程序员面试自我介绍:这是一份 PHP 程序员面试时需要准备的自我介绍范文,旨在展示自己的技术能力、项目经验和职业目标。 2. ...
"php程序员试用期工作总结" php程序员试用期工作总结报告为我们提供了一个详细的关于php程序员在试用期的工作经验和总结。以下是我们从报告中提取的关键知识点: 一、php程序员试用期工作总结的重要性 * 试用期是...
php程序员简历范文,简历是一个人求职最重要的一步,除了要写清自己的基本情况、求职意向、教育背景外,针对php程序员在简历中要写清自己的工作能力和专长,方便用人单位了解并聘用。 php程序员简历范文节选 范文一 ...
Java程序员不该有的6种陋习
史上最经典实用的PHP程序员经典面试、笔试题目解析(下)
【谢华亮 PHP程序员的选择】 在当今的互联网行业中,PHP作为一种强大的服务器端脚本语言,深受程序员们的喜爱。谢华亮作为PHP领域的专家,他的见解和经验对于想要在这个领域发展的程序员来说具有很高的参考价值。本...
php程序员优秀求职简历
PHP 程序员面试自我介绍知识点 在 PHP 程序员面试中,自我介绍是一项非常重要的环节。通过自我介绍,面试官可以了解到候选人的职业道德、工作态度、客户交流沟通能力、思维能力、团队合作能力、主动性等方面的情况...
PHP程序员实习生简历模板
作为一名PHP程序员,提升自身技能和遵循良好的编程习惯是至关重要的。以下是对标题和描述中提到的40个陋习的详细解释和...改善这些陋习能显著提升PHP程序员的编程水平和代码质量,对于团队协作和项目维护具有重要意义。
包括PHP程序员简历模板、iOS程序员简历模板、Android程序员简历模板、Web前端程序员简历模板、Java程序员简历模板、C C... (Resume template for Chinese programmers Programmer resume template series. Including...