文档章节

PHP程序员的40点陋习 - 马永占 译

哈狮子
 哈狮子
发布于 2014/09/30 15:46
字数 1452
阅读 17
收藏 0

版权声明:原创作品,允许转载,转载时请务必以超链接形式标明文章原始出版、作者信息和本声明。否则将追究法律责任。http://blog.csdn.net/mayongzhan - 马永占,myz,mayongzhan

Reinhold Weber 提出PHP程序员的40点陋习.(本E问只写了一部分内容,译者找到原版翻译,以下是完全版)

       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的框架(大多数框架中都包含优秀的代码和先进的概念.值得我们学习)

其中译者还有很多做不到的,还需要努力!

 

以下是原文:

1. don't comment your code properly with something like phpDoc

2. don't see the need and/or benefits of a good programming IDE like Zend Studio or Eclipse PDT

3. have never used some form of version control like Subclipse

4. don't adopt some coding & naming standards and general conventions and stick to to them at least throughout the project

5. don't use a consistent methodology

6. don't escape and/or validate properly input or sql queries

7. don't plan your application thoroughly before starting to code

8. don't use test-driven development

9. don't program & test with error reporting on

10. don't see the benefits of a debugger

   11. don't refactor your code

   12. don't keep the different layers seperated using something like MVC

   13. don't know what these stand for: KISS, DRY, MVC, OOP, REST

   14. don't return content but echo or print it from your functions or classes

   15. have never seen the advantage of unit tests or testing in general

   16. return HTML, not data, strings, or objects.

   17. hard code messages and configuration parameters

   18. don't optimize your sql queries

  19. don't use __autoload

   20. don't allow intelligent error handling

   21. use $_GET instead of $_POST for any destructive actions

   22. don't know how to use regular expressions

   23. you've never heard of sql injection or cross-site scripting

  24. don't allow simple configuration, can be parameters passed to a class’s constructor, set/get methods called later, or constants defined at a runtime.

 25. don't understand the benefits and limitations of Object Oriented Programming

26. misuse OOP / everything you write , no matter how small is OOP

27. you think reusable software equals/requires your code to be OOP

28. don't choose intelligent defaults

   29. don't have one single configuration file

  30. don't want the file contents to be seen, but give it a .inc extension instead of .php

  31. don't use a database abstraction layer

   32. don't keep it DRY, Don't repeat yourself. If you have to copy and paste or duplicate something your design may be off.

  33. don't make a function/class/method do just one thing and don't make them interact.

   34. don't try to take advantage of OOP specific features like abstract/interface classes, inheritage polymorphism & access modifiers.

   35. don't optimize your application design with established design patterns

  36. don't allow your user to define a base directory if you have multiple files and/or directories

 

  37. pollute the global namespace, one option is to prefix the functions in your library with a common string

  38. don't allow a table prefix when using database tables

  39. use a separate template engine

  40. don't take a look at established php frameworks for inspiration, most of them have advanced web dev concepts and good code 
 
Reinhold Weber has put together a list of signs (40 in all on his "programming list of shame") that you're a lousy PHP programmer. Here's a sampling:
don't see the need and/or benefits of a good programming IDE like Zend Studio or Eclipse PDT 
have never used some form of version control like Subclipse 
don't use a consistent methodology 
don't use test-driven development 
don't return content but echo or print it from your functions or classes 
return HTML, not data, strings, or objects. 
don't allow intelligent error handling 
you think reusable software equals/requires your code to be OOP 
Now granted, some of them are a bit more high level than others, but if you're not headed towards a lot of these, you might change paths, hop out of that comfort zone and branch out into the community and the language a little bit more.

本文转载自:http://blog.csdn.net/mayongzhan/article/details/2096975

哈狮子
粉丝 2
博文 18
码字总数 4651
作品 0
常州
私信 提问
张明云的Live——程序员的常见陋习

零 Live主题本次Live入口:程序员的常见陋习 一 关于我 我是张明云,常活跃于知乎和简书,知乎 Android 开发 和 编程 话题下优秀回答者;简书《 Android 开发经验谈》专题管理员,近 15K 的关...

张明云
2016/12/19
0
0
JS、PHP、Python等五大编程语言爆漏洞;中兴 70 后程序员坠亡;雷军平定迅雷内乱 | 一周业界事

点击上方“CSDN”,选择“置顶公众号” 关键时刻,第一时间送达! 回顾刚刚过去的一周,谷歌 AI 中国中心成立,谷歌将以人工智能技术研发的方式“重返”中国,李飞飞女士发言引得众人喝彩。而...

csdnnews
2017/12/16
0
0
入股永辉云创,创新工场看中了零售赛道的哪些机遇?

雷锋网(公众号:雷锋网)消息 近日,创新工场宣布以3750万元入股永辉超市旗下子公司永辉云创,一同入股的还有北京丹晟投资基金中心。入股后,创新工场和北京丹晟投资将分别持有永辉云创3%和2...

刘伟
2018/05/29
0
0
Stack Overflow 2019 开发者报告:Python 超越 Java,Rust 持续称王!

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/csdnnews/article/details/89240862 2019 年 Stack Overflow 开发者调查报告最新出炉了!今年,近 90,000 名开...

CSDN资讯
04/12
0
0
陆首群:开源脚本语言PHP

PHP是一种开源的脚本语言,自1994年问世以来,受到互联网和开源运动发展的推动,取得了迅猛的发展(近年来发展速度高达37%,明显高于其他两种通用语言Jave和C#;而且PHP的发展反过来又促进互...

小卒过河
2011/05/06
2.3K
18

没有更多内容

加载失败,请刷新页面

加载更多

nginx学习笔记

中间件位于客户机/ 服务器的操作系统之上,管理计算机资源和网络通讯。 是连接两个独立应用程序或独立系统的软件。 web请求通过中间件可以直接调用操作系统,也可以经过中间件把请求分发到多...

码农实战
今天
5
0
Spring Security 实战干货:玩转自定义登录

1. 前言 前面的关于 Spring Security 相关的文章只是一个预热。为了接下来更好的实战,如果你错过了请从 Spring Security 实战系列 开始。安全访问的第一步就是认证(Authentication),认证...

码农小胖哥
今天
12
0
JAVA 实现雪花算法生成唯一订单号工具类

import lombok.SneakyThrows;import lombok.extern.slf4j.Slf4j;import java.util.Calendar;/** * Default distributed primary key generator. * * <p> * Use snowflake......

huangkejie
昨天
12
0
PhotoShop 色调:RGB/CMYK 颜色模式

一·、 RGB : 三原色:红绿蓝 1.通道:通道中的红绿蓝通道分别对应的是红绿蓝三种原色(RGB)的显示范围 1.差值模式能模拟三种原色叠加之后的效果 2.添加-颜色曲线:调整图像RGB颜色----R色增强...

东方墨天
昨天
11
1
将博客搬至CSDN

将博客搬至CSDN

算法与编程之美
昨天
13
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部