40个迹象表明你还是PHP菜鸟


Posted in PHP onSeptember 29, 2008

我愿意把本文归入我的“编程糗事”系列。尽管在正规大学课程中,接触到软件工程、企业级软件架构和数据库设计,但我还是时不时地体会到下述事实带给我的“罪恶”感,当然,都是我的主观感受,并且面向Eclipse:

你是PHP菜鸟,如果你:

1. 不会利用如phpDoc这样的工具来恰当地注释你的代码
2. 对优秀的集成开发环境如Zend Studio或Eclipse PDT视而不见
3. 从未用过任何形式的版本控制系统,如Subclipse
4. 不采用某种编码与命名标准,以及通用约定,不能在项目开发周期里贯彻落实
5. 不使用统一开发方式
6. 不转换(或)也不验证某些输入或SQL查询串(译注:参考PHP相关函数)
7. 不在编码之前彻底规划你的程序
8. 不使用测试驱动开发
9. 不在错误开启状态下进行编码和测试(译注:参考PHP函数error_reporting)
10. 对调试器的好处视而不见
11. 不重构你的代码
12. 不使用类似MVC模式把程序的不同层次划分开
13. 不知道这些概念:KISS, DRY, MVC, OOP, REST
14. 不用return而是直接在你的函数或类中输出(echo/print)内容
15. 对单元测试或通用测试的优点视而不见
16. 总是返回硬编码的HTML,却不返回纯粹的数据,字符串,或对象
17. 总是对“消息”和“配置参数”进行硬编码
18. 不对SQL查询语句做优化
19. 不使用__autoload(译注:参考PHP手册相关描述)
20. 不允许智能错误处理(译注:参考PEAR的ErrorStack)
21. 使用$_GET替代$_POST来做具有破坏性的传递操作
22. 不知道怎么利用正则表达式
23. 从未听说过SQL注入或跨站脚本
24. 不允许简易配置,也不允许类的构造函数接受参数传递而后执行set/get方法,或运行时的常量定义
25. 不理解面向对象编程(OOP)的优势和劣势
26. 不视情形大小而滥用OOP
27. 自认为实现可复用的软件一定等于/需要让你的代码遵循OOP
28. 不利用智能缺省值
29. 没有单一的配置文件
30. 不想暴露文件源码,却用.inc后缀名取代了.php
31. 不使用数据库抽象层
32. 不能保持DRY作风,即不重复自己,如果你总是在复制粘贴一些东西,说明你设计得很差劲
33. 没有实现让一个函数/类/方法只做一件事,也不能组合利用它们
34. 没能尝试OOP的特长,如抽象类、接口、多态、继承,访问控制修饰符(译注:如public, private, protected)
35. 不用现有的设计模式优化你的程序体系设计
36. 不允许你的用户在你拥有很多文件或目录的情况下定义基础目录
37. 污染了名称空间,比如用常见字符串命名你的库函数
38. 使用数据库表时不使用表前缀
39. 不使用统一的模板引擎
40. 不关注已有的PHP开发框架,懒于探索;其实先进的开发理念和美妙代码就蕴含其中。

译注:另有马永占翻译版本《PHP程序员的40点陋习》,简洁并配有译者注释。

PHP 相关文章推荐
简体中文转换为繁体中文的PHP函数
Oct 09 PHP
PHP 身份证号验证函数
May 07 PHP
处理单名多值表单的详解
Jun 08 PHP
PHP 面向对象程序设计(oop)学习笔记 (二) - 静态变量的属性和方法及延迟绑定
Jun 12 PHP
PHP四舍五入、取整、round函数使用示例
Feb 06 PHP
PHP的伪随机数与真随机数详解
May 27 PHP
php通过curl添加cookie伪造登陆抓取数据的方法
Apr 02 PHP
thinkphp,onethink和thinkox中验证码不显示的解决方法分析
Jun 06 PHP
PHP中使用foreach()遍历二维数组的简单实例
Jun 13 PHP
PHP使用PDO创建MySQL数据库、表及插入多条数据操作示例
May 30 PHP
对laravel in 查询的使用方法详解
Oct 09 PHP
Laravel 对某一列进行筛选然后求和sum()的例子
Oct 10 PHP
PHP网站基础优化方法小结
Sep 29 #PHP
10条PHP编程习惯助你找工作
Sep 29 #PHP
PHP生成带有雪花背景的验证码
Sep 28 #PHP
PHP编实现程动态图像的创建代码
Sep 28 #PHP
php 三维饼图的实现代码
Sep 28 #PHP
PHP控制网页过期时间的代码
Sep 28 #PHP
PHP集成FCK的函数代码
Sep 27 #PHP
You might like
PHP读写文件的方法(生成HTML)
2006/11/27 PHP
Bo-Blog专用的给Windows服务器的IIS Rewrite程序
2007/08/26 PHP
php unset全局变量运用问题的深入解析
2013/06/17 PHP
php生成excel列序号代码实例
2013/12/24 PHP
php中curl、fsocket、file_get_content三个函数的使用比较
2014/05/09 PHP
php使用sql server验证连接数据库的方法
2014/12/25 PHP
php基于openssl的rsa加密解密示例
2016/07/11 PHP
PHP实现求连续子数组最大和问题2种解决方法
2017/12/26 PHP
分享十五个最佳jQuery 幻灯插件和教程
2010/03/27 Javascript
jQuery 源码分析笔记(6) jQuery.data
2011/06/08 Javascript
extjs两个tbar问题探讨
2013/08/08 Javascript
Asp.Net alert弹出提示信息的几种方法总结
2014/01/29 Javascript
js 实现浏览历史记录示例
2014/04/20 Javascript
js中的setInterval和setTimeout使用实例
2014/05/09 Javascript
angularJS与bootstrap结合实现动态加载弹出提示内容
2015/10/16 Javascript
再次谈论React.js实现原生js拖拽效果引起的一系列问题
2016/04/03 Javascript
jquery动态切换背景图片的简单实现方法
2016/05/14 Javascript
js实现自定义路由
2017/02/04 Javascript
JavaScript mixin实现多继承的方法详解
2017/03/30 Javascript
Vue使用.sync 实现父子组件的双向绑定数据问题
2019/04/04 Javascript
JavaScript 面向对象基础简单示例
2019/10/02 Javascript
Django自定义插件实现网站登录验证码功能
2017/04/19 Python
Python编程实现双链表,栈,队列及二叉树的方法示例
2017/11/01 Python
基于Django URL传参 FORM表单传数据 get post的用法实例
2018/05/28 Python
python爬虫之线程池和进程池功能与用法详解
2018/08/02 Python
python下的opencv画矩形和文字注释的实现方法
2019/07/09 Python
Python调用Windows API函数编写录音机和音乐播放器功能
2020/01/05 Python
Anaconda和ipython环境适配的实现
2020/04/22 Python
Julep官网:美容产品和指甲油
2017/02/25 全球购物
在C语言中实现抽象数据类型什么方法最好
2014/06/26 面试题
中学生操行评语
2014/04/24 职场文书
感恩老师的演讲稿
2014/05/06 职场文书
法人授权委托书样本
2014/09/19 职场文书
感谢信的格式
2015/01/21 职场文书
电影焦裕禄观后感
2015/06/09 职场文书
Nginx解决前端访问资源跨域问题的方法详解
2021/03/31 Servers