PHP程序员的40点陋习,我几乎全部中枪
1、不写注释
2、不使用可以提高生产效率的IDE工具
3、不使用版本控制
4、不按照编程规范写代码
5、不使用统一的方法
6、编码前不去思考和计划
7、在执行sql前不执行编码和安全检测
8、不使用测试驱动开发
9、编码时不打开自动报错(error_reporting)
10、不使用一种好的调试工具
11、不重构你的代码(refactor)
12、不采用MVC这样的分层结构
13、不知道以下等等概念:KISS,DRY,MVC,OOP,REST
14、在函数或者类里直接用print或者echo输出东西而不是返回(return)
15、不使用也不去了解单元测试
16、返回HTMl而不是data,strings,objects等类型
17、糟糕的代码和配置参数(hard code messages and configuration parameters)
18、不优化sql查询
19、不使用__autoload
20、不支持自动错误操作(应该是智能纠错)
21、使用$_GET替代$_POST去进行危险的参数传递(记得这40条都是错误的东西)
22、不知道怎样使用正则表达式
23、从未听说过sql注入和跨站脚本(安全方面,应该了解下这两个东西的英文:sql injection,cross-site scripting)
24、不支持简单配置,传递参数给类的构造函数,set/get方法,定义常量
25、不能理解OOP的优缺点
26、无论要做的东西有多小,都使用OOP
27、认为做可复用的软件就是OOP
28、不使用缺省值(don't choose intelligent defaults)
29、不使用单一配置文件
30、不想让别人看到代码,却使用.inc替换掉.php
31、不使用数据库抽象层(持久层)
32、开发时不DRY(Dont repeat yourself). (就是总开发重复的东西)
33、不开发可以重复使用的类或者方法
34、不使用抽象类或者接口类,继承,多态,封装.
35、不使用已有的设计模式优化你的程序.
36、不允许使用者定义基础目录(这点好象PHP不太适合,毕竟不是基于操作系统的开发)
37、错误的使用命名空间,使用大家都普遍使用的单词作为前缀.(这样以后别人使用会造成冲突.,例如自己定义一个function 叫 array_push())
38、使用数据库时不使用表前缀(这个很重要...)
39、不使用或者使用一个陌生的模板引擎(方便团队开发,大家要使用常见的模板)
40、不去看PHP的框架(大多数框架中都包含优秀的代码和先进的概念.值得我们学习)
PHP程序员的40点陋习,我几乎全部中枪的更多相关文章
- PHP程序员的40点陋习
1.不写注释 2.不使用可以提高生产效率的IDE工具 3.不使用版本控制 4.不按照编程规范写代码 5.不使用统一的方法 6.编码前不去思考和计划 7.在执行sql前不执行编码和安全检测 8.不使用测 ...
- C# 你什么让程序员寂寞成酱紫 (男生版 娱乐中学习 抽象类 接口 继承 实现方法 )
你什么让程序员寂寞成酱紫 (男生版 娱乐中学习 抽象类 接口 继承 实现方法 ) 一个家庭 相当于 一个空间,这个空间里 有 很多元素,比如 爱,爱这个抽象事物,可能有很多动作,接吻.交流,对于一 ...
- 十年京东Java程序员的工作总结,写给迷茫中的你!
很多年前,刚刚从大学毕业的时候,很多公司来校招.其中最烂俗的一个面试问题是:“你希望你之后三到五年的发展是什么?”.我当时的标准回答是(原话):“成为在某一方面能够独当一面的技术专家“.后来经历了几家 ...
- 《PHP程序员面试笔试宝典》——如何克服面试中紧张的情绪?
本文摘自<PHP程序员面试笔试宝典>. PHP面试技巧分享,PHP面试题,PHP宝典尽在"琉忆编程库". 面试的成功与否,往小的方面讲,直接关系到求职者的工作问题,往大 ...
- 《PHP程序员面试笔试宝典》——如何解决求职中的时间冲突问题?
如何巧妙地回答面试官的问题? 本文摘自<PHP程序员面试笔试宝典> 对求职者而言,求职季就是一个赶场季,一天少则几家.十几家企业入校招聘,多则几十家.上百家企业招兵买马.企业多,选择项自然 ...
- 《Java程序员面试笔试宝典》之为什么Java中有些接口没有任何方法
由于Java不支持多重继承,即一个类只能有一个父类,为了克服单继承的缺点,Java语言引入了接口这一概念.接口是抽象方法定义的集合(接口中也可以定义一些常量值),是一种特殊的抽象类.接口中只包含方法的 ...
- 美女程序员是如何将QQ转换成题目中那串数字的--读博文《找女神要QQ号码》
我只能说好好的端午节你们不约么?,还在这里写代码?我也是够无聊的,下班了不走也在这跟风写着玩!<找女生要QQ号码原文>原文链接http://www.cnblogs.com/iforever ...
- [程序员代码面试指南]二叉树问题-在二叉树中找到两个节点的最近公共祖先、[LeetCode]235. 二叉搜索树的最近公共祖先(BST)(非递归)
题目 题解 法一: 按照递归的思维去想: 递归终止条件 递归 返回值 1 如果p.q都不在root为根节点的子树中,返回null 2 如果p.q其中之一在root为根节点的子树中,返回该节点 3 如果 ...
- [程序员代码面试指南]二叉树问题-找到二叉树中的最大搜索二叉树(树形dp)
题意 给定一颗二叉树的头节点,已知所有节点的值都不一样,找到含有节点最多的搜索二叉子树,并返回这个树的头节点. 题解 在后序遍历过程中实现. 求解步骤按树形dp中所列步骤.可能性三种:左子树最大.右子 ...
随机推荐
- mysql 查询
查询数据:select s_name from student limit 1;//限制数量 select * from student where s_id in (select s_id from ...
- 标签跳转break和continue
标签是后面跟有冒号的标识符,例如 label1: 在java中,标签起作用的唯一的地方刚好是在迭代语句之前. “刚好之前”的意思表明,在标签和迭代之间置入热和语句都不好. 而在迭代之前设置标签的唯一 ...
- Oracle 存储过程实例2
--创建存储过程 CREATE OR REPLACE PROCEDURE xxxxxxxxxxx_p ( --参数IN表示输入参数,OUT表示输入参数,类型可以使用任意Oracle中的合法类型. is ...
- 2109&2535: [Noi2010]Plane 航空管制 - BZOJ
Description世博期间,上海的航空客运量大大超过了平时,随之而来的航空管制也频频发生.最近,小X就因为航空管制,连续两次在机场被延误超过了两小时.对此,小X表示很不满意. 在这次来烟台的路上, ...
- [转]谈谈C++中的swap函数
1,最通用的模板交换函数模式:创建临时对象,调用对象的赋值操作符. template <class T> void swap ( T& a, T& b ) { T c(a) ...
- JQuery,UIbootstrap风格弹出层
<!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml"><head> <met ...
- 【技术贴】解决Eclipse中SVN图标不显示
在用Eclipse做开发的时候,用到了svn版本控制器,这天当我打开Eclipse的时候,发现项目里面的所有文件前的版本号以及状态图标都不显示了,即所有的svn图标不显示了,这是怎么回事,关掉Ecli ...
- 集合上的动态规划---最优配对问题(推荐:*****) // uva 10911
/* 提醒推荐:五星 刘汝佳<算法竞赛入门经典>,集合上的动态规划---最优配对问题 题意:空间里有n个点P0,P1,...,Pn-1,你的任务是把它们配成n/2对(n是偶数),使得每个点 ...
- OpenResty 反向代理的用法与技巧
Nginx最开始是作为反向代理被熟知的,基于它的OpenResty的自然也是支持反向代理的,下面我们就来看看它的一些基本用法以及在使用过程中的一些技巧. 一.基本用法 在业务环境中,可能会将OpenR ...
- Redis学习笔记(十)——过期时间、访问限制与缓存
http://irfen.me/redis-learn-10-time-expire-limit-cache/ 过期时间 之前应该提到过 redis 的特性之一是可以设置键的超时时间.命令是expir ...