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可能遇到的问题“无法载入mysql扩展” 的解决方法
Apr 16 PHP
php下判断数组中是否存在相同的值array_unique
Mar 25 PHP
php 生成随机验证码图片代码
Feb 08 PHP
php中在PDO中使用事务(Transaction)
May 14 PHP
PHP缓存技术的多种方法小结
Aug 14 PHP
分享php分页的功能模块
Jun 16 PHP
PHP 7的一些引人注目的新特性简单介绍
Nov 08 PHP
修改Laravel5.3中的路由文件与路径
Aug 10 PHP
php通过各种函数判断0和空
Jul 04 PHP
php使用mysqli和pdo扩展,测试对比mysql数据库的执行效率完整示例
May 09 PHP
关于Laravel参数验证的一些疑与惑
Nov 19 PHP
laravel框架中间件简单使用方法示例
Jan 25 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 对输入信息的进行安全过滤的函数代码
2012/06/29 PHP
如何利用PHP执行.SQL文件
2013/07/05 PHP
php+ajax实现图片文件上传功能实例
2014/06/17 PHP
destoon二次开发模板及调用语法汇总
2014/06/21 PHP
php实现用手机关闭计算机(电脑)的方法
2015/04/22 PHP
解析 thinkphp 框架中的部分方法
2017/05/07 PHP
php爬取天猫和淘宝商品数据
2018/02/23 PHP
Javascript 生成指定范围数值随机数
2009/01/09 Javascript
javascript中var的重要性分析
2015/02/11 Javascript
JS+CSS实现带有碰撞缓冲效果的竖向导航条代码
2015/09/15 Javascript
AngularJS ng-change 指令的详解及简单实例
2016/07/30 Javascript
详解AngularJS中的表单验证(推荐)
2016/11/17 Javascript
jQuery联动日历的实例解析
2016/12/02 Javascript
node.js中debug模块的简单介绍与使用
2017/04/25 Javascript
详谈表单格式化插件jquery.serializeJSON
2017/06/23 jQuery
Angular弹出模态框的两种方式
2017/10/19 Javascript
利用vue + koa2 + mockjs模拟数据的方法教程
2017/11/22 Javascript
vue filters的使用详解
2018/06/11 Javascript
基于jQuery ztree实现表格风格的树状结构
2018/08/31 jQuery
JavaScript+HTML5 canvas实现放大镜效果完整示例
2019/05/15 Javascript
JS中比较两个Object数组是否相等方法实例
2019/11/11 Javascript
Vue实现手机扫描二维码预览页面效果
2020/05/28 Javascript
使用konva和vue-konva库实现拖拽滑块验证功能
2020/04/27 Javascript
基于Vue+Webpack拆分路由文件实现管理
2020/11/16 Javascript
如何管理Vue中的缓存页面
2021/02/06 Vue.js
python的Template使用指南
2014/09/11 Python
Python 装饰器深入理解
2017/03/16 Python
详解python中executemany和序列的使用方法
2017/08/12 Python
python基于twisted框架编写简单聊天室
2018/01/02 Python
澳大利亚个性化儿童礼品网站:Bright Star Kids
2019/06/14 全球购物
德国、奥地利和瑞士最大的旅行和度假门户网站:HolidayCheck
2019/11/14 全球购物
饲料采购员岗位职责
2013/12/19 职场文书
运动会开幕式邀请函
2014/01/22 职场文书
办公室文员岗位职责范本
2014/06/12 职场文书
2014大学生中国梦主题教育学习思想汇报
2014/09/10 职场文书
简历自我评价范文
2019/04/24 职场文书