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 事务处理数据实现代码
May 13 PHP
php include和require的区别深入解析
Jun 17 PHP
yii实现CheckBox复选框在同一行显示的方法
Dec 03 PHP
PHP整合PayPal支付
Jun 11 PHP
详解WordPress中的头像缓存和代理中的缓存更新方法
Mar 01 PHP
轻松掌握php设计模式之访问者模式
Sep 23 PHP
php mysql获取表字段名称和字段信息的三种方法
Nov 13 PHP
php+mysql实现简单登录注册修改密码网页
Nov 30 PHP
PHP面向对象程序设计之接口的继承定义与用法详解
Dec 20 PHP
PDO::errorCode讲解
Jan 28 PHP
Laravel如何创建服务器提供者实例代码
Apr 15 PHP
PHP 代码简洁之道(小结)
Oct 16 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更新购物车数量(表单部分/PHP处理部分)
2013/05/03 PHP
PHP使用Mysql事务实例解析
2014/09/08 PHP
自写的利用PDO对mysql数据库增删改查操作类
2018/02/19 PHP
用jQuery打造TabPanel效果代码
2010/05/22 Javascript
jquery 插件学习(五)
2012/08/06 Javascript
鼠标事件的screenY,pageY,clientY,layerY,offsetY属性详解
2015/03/12 Javascript
jQuery延迟加载图片插件Lazy Load使用指南
2015/03/25 Javascript
SpringMVC restful 注解之@RequestBody进行json与object转换
2015/12/10 Javascript
JS实现合并两个数组并去除重复项只留一个的方法
2015/12/17 Javascript
JS实现支持Ajax验证的表单插件
2016/03/24 Javascript
javascript事件委托的用法及其好处简析
2016/04/04 Javascript
JavaScript根据CSS的Media Queries来判断浏览设备的方法
2016/05/10 Javascript
Bootstrap响应式导航由768px变成992px的实现代码
2017/06/15 Javascript
JavaScript之map reduce_动力节点Java学院整理
2017/06/29 Javascript
js实现本地时间同步功能
2017/08/26 Javascript
解决npm安装Electron缓慢网络超时导致失败的问题
2018/02/06 Javascript
每个 JavaScript 工程师都应懂的33个概念
2018/10/22 Javascript
vue中的router-view组件的使用教程
2018/10/23 Javascript
vue-cli3环境变量与分环境打包的方法示例
2019/02/18 Javascript
vue cli3适配所有端方案的实现
2020/04/13 Javascript
JavaScript缓动动画函数的封装方法
2020/11/25 Javascript
[01:05:56]Liquid vs VP Supermajor决赛 BO 第二场 6.10
2018/07/04 DOTA
在Python中利用Pandas库处理大数据的简单介绍
2015/04/07 Python
基于python的七种经典排序算法(推荐)
2016/12/08 Python
Python对字符串实现去重操作的方法示例
2017/08/11 Python
PYTHON实现SIGN签名的过程解析
2019/10/28 Python
CSS3 icon font完全指南(CSS3 font 会取代icon图标)
2013/01/06 HTML / CSS
Huda Beauty官方商店:化妆和美容产品
2020/09/05 全球购物
华为c/c++笔试题
2016/01/25 面试题
为什么在使用动态 SQL 语句时必须为低层数据库对象授予权限
2012/12/13 面试题
什么是makefile? 如何编写makefile?
2012/08/08 面试题
优秀应届生求职信
2014/06/16 职场文书
师德师风自我评价范文
2014/09/11 职场文书
教师四风自我剖析材料
2014/09/30 职场文书
优秀党员主要事迹材料
2015/11/04 职场文书
pytorch 运行一段时间后出现GPU OOM的问题
2021/06/02 Python