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来自动调用不同服务器上的flash
Oct 09 PHP
ZF等常用php框架中存在的问题
Jan 10 PHP
用js进行url编码后用php反解以及用php实现js的escape功能函数总结
Feb 08 PHP
PHP的范围解析操作符(::)的含义分析说明
Jul 03 PHP
php数组函数序列之end() - 移动数组内部指针到最后一个元素,并返回该元素的值
Oct 31 PHP
php无限分类且支持输出树状图的详细介绍
Jun 19 PHP
使用GD库生成带阴影文字的图片
Mar 27 PHP
一个简单的php路由类
May 29 PHP
详解PHP中mb_strpos的使用
Feb 04 PHP
PHP设计模式之PHP迭代器模式讲解
Mar 22 PHP
PHP正则表达式处理函数(PCRE 函数)实例小结
May 09 PHP
php的优点总结 php有哪些优点
Jul 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
是否存在第一台收音机的说法
2021/03/01 无线电
php,不用COM,生成excel文件
2006/10/09 PHP
基于php 随机数的深入理解
2013/06/05 PHP
PHP保留两位小数并且四舍五入及不四舍五入的方法
2013/09/22 PHP
PHP使用内置函数file_put_contents写入文件及追加内容的方法
2015/12/07 PHP
php 如何获取文件的后缀名
2016/06/05 PHP
php给数组赋值的实例方法
2019/09/26 PHP
jQuery中prev()方法用法实例
2015/01/08 Javascript
jquery实现标题字体变换的滑动门菜单效果
2015/09/07 Javascript
Bootstrap CSS布局之表格
2016/12/17 Javascript
js实现楼层导航功能
2017/02/23 Javascript
Vue.js在使用中的一些注意知识点
2017/04/29 Javascript
Easyui在treegrid添加控件的实现方法
2017/06/23 Javascript
对vue中v-on绑定自定事件的实例讲解
2018/09/06 Javascript
ES6 Map结构的应用实例分析
2019/06/26 Javascript
layui 富文本编辑器和textarea值的相互传递方法
2019/09/18 Javascript
echarts实现折线图的拖拽效果
2019/12/19 Javascript
Ant Design的Table组件去除
2020/10/24 Javascript
js正则表达式简单校验方法
2021/01/03 Javascript
[01:02:48]2018DOTA2亚洲邀请赛小组赛 A组加赛 Newbee vs Liquid
2018/04/03 DOTA
Python与Redis的连接教程
2015/04/22 Python
Python Matplotlib库入门指南
2015/05/18 Python
Python查找第n个子串的技巧分享
2018/06/27 Python
Python读取csv文件分隔符设置方法
2019/01/14 Python
Python实现定制自动化业务流量报表周报功能【XlsxWriter模块】
2019/03/11 Python
Django中Middleware中的函数详解
2019/07/18 Python
Django时区详解
2019/07/24 Python
金牌葡萄酒俱乐部:Gold Medal Wine Club
2017/11/02 全球购物
Zipadee-Zip襁褓过渡毯:Sleeping Baby
2018/12/30 全球购物
德国自然时尚和有机产品购物网站:Waschbär
2019/05/29 全球购物
给客户的道歉信
2014/01/13 职场文书
安全责任书模板
2014/07/22 职场文书
2015夏季作息时间调整通知
2015/04/24 职场文书
2015年学校党建工作总结
2015/05/19 职场文书
生日宴会家属答谢词
2015/09/29 职场文书
HTML 里 img 元素的 src 和 srcset 属性的区别详解
2023/05/21 HTML / CSS