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模板的朋友必看的很多个顶级PHP模板引擎比较分析
May 26 PHP
PHP 页面编码声明方法详解(header或meta)
Mar 12 PHP
PHP imagegrabscreen和imagegrabwindow(截取网站缩略图)的实例代码
Nov 07 PHP
PHP 动态生成静态HTML页面示例代码
Jan 15 PHP
PHP经典面试题集锦
Mar 19 PHP
php计算函数执行时间的方法
Mar 20 PHP
wordpress安装过程中遇到中文乱码的处理方法
Apr 21 PHP
PHP的Yii框架的常用日志操作总结
Dec 08 PHP
PHP利用二叉堆实现TopK-算法的方法详解
Apr 24 PHP
Laravel6.2中用于用户登录的新密码确认流程详解
Oct 16 PHP
php传值和传引用的区别点总结
Nov 19 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
ThinkPHP快速入门实例教程之数据分页
2014/07/01 PHP
PHP中常用的输出函数总结
2014/09/22 PHP
PHP封装的Twitter访问类实例
2015/07/18 PHP
Yii中表单用法实例详解
2016/01/05 PHP
thinkPHP模板引擎用法示例
2016/12/08 PHP
laravel http 自定义公共验证和响应的方法
2019/09/29 PHP
javascript 图片上一张下一张链接效果代码
2010/03/12 Javascript
ExtJS PropertyGrid中使用Combobox选择值问题
2010/06/13 Javascript
javascript学习笔记(三)显示当时时间的代码
2011/04/08 Javascript
JavaScript获取服务器时间的方法详解
2016/12/11 Javascript
使用base64对图片的二进制进行编码并用ajax进行显示
2017/01/03 Javascript
JavaScript实现二维坐标点排序效果
2017/07/18 Javascript
vue Element-ui input 远程搜索与修改建议显示模版的示例代码
2017/10/19 Javascript
webpack配置导致字体图标无法显示的解决方法
2018/03/06 Javascript
jQuery实现文件编码成base64并通过AJAX上传的方法
2018/04/12 jQuery
jQuery - AJAX load() 实例用法详解
2019/08/27 jQuery
微信小程序 函数防抖 解决重复点击消耗性能问题实现代码
2019/09/12 Javascript
JavaScript中0、空字符串、'0'是true还是false的知识点分享
2019/09/16 Javascript
使用原生JS实现火锅点餐小程序(面向对象思想)
2019/12/10 Javascript
Python中条件选择和循环语句使用方法介绍
2013/03/13 Python
Python中给List添加元素的4种方法分享
2014/11/28 Python
Python数据结构之图的应用示例
2018/05/11 Python
python Flask 装饰器顺序问题解决
2018/08/08 Python
Django实现文件上传下载功能
2019/10/06 Python
关于初始种子自动选取的区域生长实例(python+opencv)
2020/01/16 Python
解决python 在for循环并且pop数组的时候会跳过某些元素的问题
2020/12/11 Python
英国口碑最好的的维他命胶囊品牌:Myvitamins(有中文站)
2016/12/03 全球购物
中东地区为妈妈们提供一切的头号购物目的地:Sprii
2018/05/06 全球购物
英国Lookfantastic中文网站:护肤品美妆美发购物(英国直邮)
2020/04/27 全球购物
解释一下ruby中的特殊方法与特殊类
2013/02/26 面试题
护士医德医风自我评价
2014/09/15 职场文书
离婚协议书的范本
2015/01/27 职场文书
工程部主管岗位职责
2015/02/12 职场文书
2015年度残疾人工作总结
2015/05/14 职场文书
Python 中的Sympy详细使用
2021/08/07 Python
python编程项目中线上问题排查与解决
2021/11/01 Python