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 相关文章推荐
玩转图像函数库―常见图形操作
Sep 03 PHP
php select,radio和checkbox默认选择的实现方法
May 15 PHP
php UBB 解析实现代码
Nov 27 PHP
PHP实现手机归属地查询API接口实现代码
Aug 27 PHP
基于php上传图片重命名的6种解决方法的详细介绍
Apr 28 PHP
LotusPhp笔记之:Logger组件的使用方法
May 06 PHP
php使用Jpgraph绘制柱形图的方法
Jun 10 PHP
PHP弹出对话框技巧详细解读
Sep 26 PHP
php将文件夹打包成zip文件的简单实现方法
Oct 04 PHP
Yii2框架实现利用mpdf创建pdf文件功能示例
Feb 08 PHP
PHP中用Trait封装单例模式的实现
Dec 18 PHP
php设计模式之代理模式分析【星际争霸游戏案例】
Mar 23 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
解析如何去掉CodeIgniter URL中的index.php
2013/06/25 PHP
PHP基本语法总结
2014/09/06 PHP
Laravel框架自定义验证过程实例分析
2019/02/01 PHP
laravel框架模型中非静态方法也能静态调用的原理分析
2019/11/23 PHP
Javascript中的方法链(Method Chaining)介绍
2015/03/15 Javascript
JavaScript实现DIV层拖动及动态增加新层的方法
2015/05/12 Javascript
JavaScript笔记之数据属性和存储器属性
2016/03/31 Javascript
JavaScript的String字符串对象常用操作总结
2016/05/26 Javascript
Nodejs从有门道无门菜鸟起飞必看教程
2016/07/20 NodeJs
将html页面保存成图片,图片写入pdf的实现方法(推荐)
2016/09/17 Javascript
JavaScript面向对象分层思维全面解析
2016/11/22 Javascript
layer弹出层中H5播放器全屏出错的解决方法
2017/02/21 Javascript
微信小程序之获取当前位置经纬度以及地图显示详解
2017/05/09 Javascript
自适应布局meta标签中viewport、content、width、initial-scale、minimum-scale、maximum-scale总结
2017/08/18 Javascript
AngularJS模态框模板ngDialog的使用详解
2018/05/11 Javascript
layer.open回调获取弹出层参数的实现方法
2019/09/10 Javascript
layui-table获得当前行的上/下一行数据的例子
2019/09/24 Javascript
jQuery单页面文字搜索插件jquery.fullsearch.js的使用方法
2020/02/04 jQuery
Python 匹配任意字符(包括换行符)的正则表达式写法
2009/10/29 Python
Python第三方库的安装方法总结
2016/06/06 Python
Django自定义用户登录认证示例代码
2019/06/30 Python
pytorch获取vgg16-feature层输出的例子
2019/08/20 Python
Python面向对象之继承原理与用法案例分析
2019/12/31 Python
keras和tensorflow使用fit_generator 批次训练操作
2020/07/03 Python
Origins悦木之源英国官网:雅诗兰黛集团高端植物护肤品牌
2017/11/06 全球购物
Shell编程面试题
2016/05/29 面试题
外贸公司实习自我鉴定
2013/09/24 职场文书
致铅球运动员加油稿
2014/02/13 职场文书
优秀大学生求职自荐信范文
2014/04/19 职场文书
应届毕业生自荐书
2014/06/18 职场文书
建筑安全生产责任书
2014/07/22 职场文书
2014年师德师风工作总结
2014/11/25 职场文书
婚礼双方父亲致辞
2015/07/27 职场文书
同学联谊会邀请函
2019/06/24 职场文书
vue使用v-model进行跨组件绑定的基本实现方法
2021/04/28 Vue.js
用Python爬取各大高校并可视化帮弟弟选大学,弟弟直呼牛X
2021/06/11 Python