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 Smarty date_format [格式化时间日期]
Mar 15 PHP
深入解析php中的foreach问题
Jun 30 PHP
PHP分页效率终结版(推荐)
Jul 01 PHP
PHP的error_reporting错误级别变量对照表
Jul 08 PHP
Laravel 4 初级教程之视图、命名空间、路由
Oct 30 PHP
php的ddos攻击解决方法
Jan 08 PHP
几个优化WordPress中JavaScript加载体验的插件介绍
Dec 17 PHP
PHP按指定键值对二维数组进行排序的方法
Dec 22 PHP
php中array_unshift()修改数组key注意事项分析
May 16 PHP
简单谈谈PHP面向对象之标识对象
Jun 27 PHP
php打开本地exe程序,js打开本地exe应用程序,并传递相关参数方法
Feb 06 PHP
PHP 文件上传限制问题
Sep 01 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 for 循环使用的简单实例
2016/06/02 PHP
csdn 批量接受好友邀请
2009/02/19 Javascript
JavaScript 新手24条实用建议[TUTS+]
2009/06/21 Javascript
JavaScript Cookie的读取和写入函数
2009/12/08 Javascript
javascript学习笔记(三)显示当时时间的代码
2011/04/08 Javascript
js中使用replace方法完成某个字符的转换
2014/08/20 Javascript
JS常用算法实现代码
2016/11/14 Javascript
jQuery对table表格进行增删改查
2020/12/22 Javascript
使用Webpack提高Vue.js应用的方式汇总(四种)
2017/07/10 Javascript
JavaScript与Java正则表达式写法的区别介绍
2017/08/15 Javascript
Vuejs实现购物车功能
2017/11/05 Javascript
webpack打包js的方法
2018/03/12 Javascript
微信小程序自定义组件封装及父子间组件传值的方法
2018/08/28 Javascript
微信小程序中button去除默认的边框实例代码
2019/08/01 Javascript
vue实现数字滚动效果
2020/06/29 Javascript
[02:41]《西雅图我们来了》2015国际邀请赛出征全记录
2015/07/23 DOTA
一篇不错的Python入门教程
2007/02/08 Python
python中 ? : 三元表达式的使用介绍
2013/10/09 Python
Django静态资源URL STATIC_ROOT的配置方法
2014/11/08 Python
解决pandas read_csv 读取中文列标题文件报错的问题
2018/06/15 Python
python 产生token及token验证的方法
2018/12/26 Python
Django框架之登录后自定义跳转页面的实现方法
2019/07/18 Python
用python实现英文字母和相应序数转换的方法
2019/09/18 Python
Python使用plt.boxplot() 参数绘制箱线图
2020/06/04 Python
python空元组在all中返回结果详解
2020/12/15 Python
css3给背景图片加颜色遮罩的方法
2019/11/05 HTML / CSS
百联网上商城:i百联
2017/01/28 全球购物
惊艳的手工时装首饰:Migonne Gavigan
2018/02/23 全球购物
River Island美国官网:英国高街时尚品牌
2018/09/04 全球购物
.NET现在共支持多少种语言
2014/02/26 面试题
大学生职业生涯规划范文
2013/12/31 职场文书
2014年五四青年节演讲比赛方案
2014/04/22 职场文书
信仰心得体会
2014/09/05 职场文书
励志语录:只有自己足够强大,才能不被别人践踏
2020/01/09 职场文书
解读MySQL的客户端和服务端协议
2021/05/10 MySQL
SQL语句多表联合查询的方法示例
2022/04/18 MySQL