40个迹象表明你还是PHP菜鸟

我愿意把本文归入我的“编程糗事”系列。尽管在正规大学课程中,接触到软件工程、企业级软件架构和数据库设计,但我还是时不时地体会到下述事实带给我的“罪恶”感,当然,都是我的主观感受,并且面向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点陋习》,简洁并配有译者注释。

(0)

相关推荐

  • 40个迹象表明你还是PHP菜鸟

    我愿意把本文归入我的"编程糗事"系列.尽管在正规大学课程中,接触到软件工程.企业级软件架构和数据库设计,但我还是时不时地体会到下述事实带给我的"罪恶"感,当然,都是我的主观感受,并且面向Eclipse: 你是PHP菜鸟,如果你: 1. 不会利用如phpDoc这样的工具来恰当地注释你的代码 2. 对优秀的集成开发环境如Zend Studio或Eclipse PDT视而不见 3. 从未用过任何形式的版本控制系统,如Subclipse 4. 不采用某种编码与命名标准,以及

  • uni-popup手写菜鸟上门取件时间选择器

    目录 引言 兼容 菜鸟上门时间选择器 需求分析: 代码实现: 1.popup弹窗 2.日期+时间选择器 核心逻辑: 1.生成左侧日期列表 2.判断时间有没有过期 3.通过计算属性获取有效时间(即右侧列表展示即将过期的和未过期的时间) 4.通过计算属性获取有效日期 5.日期或时间选中函数 源码及使用 使用: 源码: TODO: 引言 近期做的项目有个需求是做一个类似菜鸟的取件时间选择器,去找了很久没找到合适的,没办法只能自己收撸,经过好几个小版本修改之后也算是定型了,这里总结一篇文档备忘,把源码贴

  • Coldfusion MX PageList 菜鸟版教程

    最初写的: 1.可以实现的功能: 首页,末页,上一页,下一页以及指定页的跳转. 首页末页有自动隐藏的功能. 跳转下拉菜单动态显示当前页码和总页数. 2.原理 核心原理参考Codefusion MX 附带的Compass Travel例子 中tripdetail.cfm的翻页原理.即假设当前页为第6页,对数据库进行查询,返回数maxRows 定为1,查上一页就是对小于6的数进行倒序查询,得出的结果是5,4,3...,因为只返回一个值,所以就得到了5.其他的同理. 3.使用方法 将代码放入要实现pa

  • 探索Perl的世界(更新到40集)-Perl视频教程

    Perl 的相比起来还是少.看视频,在入门时还是相当方便的,就象电影来看就好了.我基本 Superor 老师每出一集我都看了.希望大家也认真看看. 记的,学习时要多写,只能看明白,只有 5% 是你的,练习都做一做,就有 30% 是你的啦.其它的如果能根据教程,自己写出自己要的程序,才 80% 是你的. 再次感谢 Superor 老师. 注意下面的内容,如果加 .zip 可以直接下载的.例如:http://www.boobooke.com/v/bbk2869.zip 第1集:第一章 Perl的概述

  • 40句让你坦露心声的经典句子!!

    1.一个人炫耀什么,说明内心缺少什么. 2.一个人越在意的地方,就是最令他自卑的地方. 3.人都有以第一印象定好坏的习惯,认为一个人好时,就会爱屋及乌,认为一个人不好时,就会全盘否认. 4.人越是得意的事情,越爱隐藏,越是痛苦的事情越爱小题大作. 5.这个世界既不是有钱人的世界,也不是有权人的世界,它是有心人的世界. 6.婚姻的杀手有时不是外遇,而是时间. 7.当你再也没有什么可以失去的时候,就是你开始得到的时候. 8.学习要加,骄傲要减,机会要乘,懒惰要除. 9.童年的无知可爱,少年的无知可笑

  • 新手如何快速入门Python(菜鸟必看篇)

    学习任何一门语言都是从入门(1年左右),通过不间断练习达到熟练水准(3到5年),少数人最终能精通语言,成为执牛耳者,他们是金字塔的最顶层.虽然万事开头难,但好的开始是成功的一半,今天这篇文章就来谈谈如何开始入门Python.只要方向对了,就不怕路远. 设定目标 当你决定入门 Python 时,需要一个清晰且短期内可实现的目标,比如通过学习找一份初级程序员工作,目标明确后,你需要了解企业对初级程序员有哪些技能要求,下面是我从拉勾网找的一个初级 Python 工程师的任职要求: 1.熟悉 Pytho

  • SQL2005 provider: 命名管道提供程序 error: 40 无法打开到 SQL Server 的连接

    ASP.net连接SQL 2005数据库出现错误提示:在建立与服务器的连接时出错.在连接到 SQL Server 2005 时,在默认的设置下 SQL Server 不允许进行远程连接可能会导致此失败. (provider: 命名管道提供程序, error: 40 - 无法打开到 SQL Server 的连接) 解决方法: 1.确保使用连接的用户名和密码可以正确登录到SQL2005.       2.确保服务器端的数据库允许远程连接,登录SQL2005企业管理器后,右键本机数据库点击"属性&qu

  • SQLServer 2008 :error 40出现连接错误的解决方法

    (provide:命名管道提供程序,error:40 -无法打开到SQL Server的连接)(Microsoft SQL Server,错误:2) 有几次连接数据库,打开SQLServer 2008的时候弹出这样的窗口,一开始不知道怎么做,后来才知道 可以通过 打开 配置工具的 SQLServer配置管理器 点击 SQLServer 服务 设置如图: 如果还有其他情况,可以设置配置中的客户端协议如下图:

  • MongoDB数据库查询性能提高40倍的经历分享

    前言 数据库性能对软件整体性能有着至关重要的影响,本文给大家分享了一次MongoDB数据库查询性能提高40倍的经历,感兴趣的朋友们可以参考学习. 背景说明 1.数据库:MongoDB 2.数据集: A:字段数不定,这里主要用到的两个UID和Date B:三个字段,UID.Date.Actions.其中Actions字段是包含260元素JSON数组,每个JSON对象有6个字段.共有数据800万条左右. 3.业务场景:求平均数 通过组合条件从A数据表查询出(UID,Date)列表,最多可能包含数万条

  • 非常有用的40款jQuery 插件推荐(系列二)

    今天开始将发布系列文章向大家分享40款非常有用的 jQuery 插件. HTML5 File Uploads with jQuery ( 演示 | 下载 ) 这是一款用于帮助你实现 HTML5 文件拖放上传功能的 jQuery 插件. Shuffle Letters Effect: a jQuery Plugin ( 演示 | 下载 ) 这款插件能够帮助实现非常酷的文字显示效果,可用于标题.LOGO和幻灯片. Skitter ( 演示 | 下载 ) Skitter 是一款非常精美的幻灯片插件,可

随机推荐