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 has encountered an Access Violation
Jan 15 PHP
php判断字符以及字符串的包含方法属性
Aug 30 PHP
php flush类输出缓冲剖析
Oct 19 PHP
PHP中几种常见的超时处理全面总结
Sep 11 PHP
php如何调用webservice应用介绍
Nov 24 PHP
修改php.ini不生效问题解决方法(上传大于8M的文件)
Jun 14 PHP
ThinkPHP3.1新特性之命名范围的使用
Jun 19 PHP
php+curl 发送图片处理代码分享
Jul 09 PHP
PHP微信支付开发实例
Jun 22 PHP
Zend Framework框架实现类似Google搜索分页效果
Nov 25 PHP
深入理解Yii2.0乐观锁与悲观锁的原理与使用
Jul 26 PHP
PHP代码加密的方法总结
Mar 13 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 一个比较完善的简单文件上传
2010/03/25 PHP
PHP环境搭建的详细步骤
2016/06/30 PHP
javascript处理表单示例(javascript提交表单)
2014/04/28 Javascript
node.js开机自启动脚本文件
2014/12/24 Javascript
JavaScript设计模式之单件模式介绍
2014/12/28 Javascript
JQuery基础语法小结
2015/02/27 Javascript
javascript操作Cookie(设置、读取、删除)方法详解
2015/03/18 Javascript
剖析Node.js异步编程中的回调与代码设计模式
2016/02/16 Javascript
Bootstrap基本插件学习笔记之Popover提示框(19)
2016/12/08 Javascript
JS模拟超市简易收银台小程序代码解析
2017/08/18 Javascript
微信小程序实战篇之购物车的实现代码示例
2017/11/30 Javascript
webpack 如何解析代码模块路径的实现
2019/09/04 Javascript
ES6使用 Array.includes 处理多重条件用法实例分析
2020/03/02 Javascript
Webpack中SplitChunksPlugin 配置参数详解
2020/03/24 Javascript
vue实现简单图片上传
2020/06/30 Javascript
vue data对象重新赋值无效(未更改)的解决方式
2020/07/24 Javascript
[51:43]OG vs LGD 2018国际邀请赛淘汰赛BO3 第五场 8.26
2018/08/30 DOTA
浅析python 中__name__ = '__main__' 的作用
2014/07/05 Python
Python打印scrapy蜘蛛抓取树结构的方法
2015/04/08 Python
使用Python脚本将绝对url替换为相对url的教程
2015/04/24 Python
python学习笔记之调用eval函数出现invalid syntax错误问题
2015/10/18 Python
全面了解Nginx, WSGI, Flask之间的关系
2018/01/09 Python
Python类反射机制使用实例解析
2019/12/30 Python
Python3 hashlib密码散列算法原理详解
2020/03/30 Python
Pyinstaller打包Scrapy项目的实现步骤
2020/09/22 Python
python Selenium 库的使用技巧
2020/10/16 Python
中外合拍动画首获奥斯卡提名,“上海出品”《飞奔去月球》能否拿下最终大奖?
2021/03/16 国漫
国外最大的眼镜网站:Coastal
2017/08/09 全球购物
Melissa鞋英国官方网站:Nonnon
2019/05/01 全球购物
学院领导推荐信
2013/10/30 职场文书
爱国演讲稿500字
2014/05/04 职场文书
关于拾金不昧的感谢信
2015/01/21 职场文书
2015年销售工作总结范文
2015/03/30 职场文书
休假证明书
2015/06/24 职场文书
2016年暑期见闻作文
2015/11/25 职场文书
解决MySQL存储时间出现不一致的问题
2021/04/28 MySQL