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 相关文章推荐
smarty section简介与用法分析
Oct 03 PHP
php 正则表达式小结
Aug 31 PHP
php的ajax框架xajax入门与试用介绍
Dec 19 PHP
php流量统计功能的实现代码
Sep 29 PHP
解决php使用异步调用获取数据时出现(错误c00ce56e导致此项操作无法完成)
Jul 03 PHP
使用PHP备份MySQL和网站发送到邮箱实例代码
Nov 28 PHP
PHP冒泡算法详解(递归实现)
Nov 10 PHP
PHP Opcache安装和配置方法介绍
May 28 PHP
PHP微信开发用Cache 解决数据缓存
Jul 11 PHP
使用Git实现Laravel项目的自动化部署
Nov 24 PHP
如何在PHP中使用数组
Jun 09 PHP
imagettftext() 失效,不起作用
Mar 09 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
Terran兵种对照表
2020/03/14 星际争霸
php生成excel列名超过26列大于Z时的解决方法
2014/12/29 PHP
PHP模拟QQ登录的方法
2015/07/29 PHP
php实现XML和数组的相互转化功能示例
2017/02/08 PHP
yii2.0整合阿里云oss删除单个文件的方法
2017/09/19 PHP
ThinkPHP开发--使用七牛云储存
2017/09/14 PHP
PHP单例模式模拟Java Bean实现方法示例
2018/12/07 PHP
laravel解决迁移文件一次删除创建字段报错的问题
2019/10/24 PHP
jQuery事件用法实例汇总
2014/08/29 Javascript
JS+CSS实现可以凹陷显示选中单元格的方法
2015/03/02 Javascript
jQuery实现的多屏图像图层切换效果实例
2015/05/07 Javascript
javascript中Date()函数在各浏览器中的显示效果
2015/06/18 Javascript
JS使用post提交的两种方式
2015/12/03 Javascript
jquery ztree实现树的搜索功能
2016/02/25 Javascript
jQuery 更改checkbox的状态,无效的解决方法
2016/07/22 Javascript
扩展jquery easyui tree的搜索树节点方法(推荐)
2016/10/28 Javascript
JavaScript判断浏览器对CSS3属性是否支持的多种方法
2016/11/13 Javascript
vue使用vuex实现首页导航切换不同路由的方法
2019/05/08 Javascript
微信小程序实现卡片层叠滑动效果
2019/06/21 Javascript
使用Vue开发自己的Chrome扩展程序过程详解
2019/06/21 Javascript
微信小程序整个页面的自动适应布局的实现
2020/07/12 Javascript
vue tab滚动到一定高度,固定在顶部,点击tab切换不同的内容操作
2020/07/22 Javascript
从Python程序中访问Java类的简单示例
2015/04/20 Python
利用Pandas 创建空的DataFrame方法
2018/04/08 Python
python 将print输出的内容保存到txt文件中
2018/07/17 Python
Python 实现交换矩阵的行示例
2019/06/26 Python
使用Python生成200个激活码的实现方法
2019/11/22 Python
详解pandas获取Dataframe元素值的几种方法
2020/06/14 Python
Timberland法国官网:购买靴子、鞋子、衣服、夹克和配饰
2019/11/30 全球购物
如何开启linux的ssh服务
2013/06/03 面试题
社区志愿者心得体会
2014/01/03 职场文书
公司股东出资证明书
2014/11/01 职场文书
2015员工年度考核评语
2015/03/25 职场文书
Python爬虫之自动爬取某车之家各车销售数据
2021/06/02 Python
详解Vue的列表渲染
2021/11/20 Vue.js
CSS的calc函数用法小结
2022/06/25 HTML / CSS