教你如何提高 PHP 代码的质量】的更多相关文章

说实话,在代码质量方面,PHP 的压力非常大.通过阅读本系列文章,您将了解如何提高 PHP 代码的质量. 我们可以将此归咎于许多原因,但这肯定不仅仅是因为 PHP 生态系统缺乏适当的测试工具.在本文中,我想向您展示一个简单的设置,用于项目的基本质量测试. 我不会详述任何特定的工具,而是专注于设定测试环境. 本文中有一个演示代码可以在 GitHub 上找到:https://github.com/mkosiedowski/php-testing-demo如果你对这篇文章中的例子有任何问题,可以参考.…
在“如何提高 PHP 代码的质量?”的前一部分中:我们设置了一些自动化工具来自动检查我们的代码.这很有帮助,但关于我们的代码如何满足业务需求并没有给我们留下任何印象.我们现在需要创建特定代码域的测试. 1 单元测试 最常见的测试软件的方法可能是编写单元测试.它们的目的是测试代码的特定单元,基于这样的假设:一切都按预期运行.为了能够编写适当的单元测试,我们的代码应该遵循一些基本的设计规则.我们应该特别关注 SOLID 原则. 通过实现单一责任原则(我们的代码应该只关注功能的单个部分),我们将确保在…
在本系列的最后一部分,是时候设置端到端 / 集成测试环境,并确保我们已经准备好检查我们工作的质量. 在本系列的前几部分中,我们建立了一个构建工具,一些静态代码分析器,并开始编写单元测试. 为了使我们的测试堆栈更完整,有一些测试可以检查你的代码是否在真实环境中运行,以及它是否能在更复杂的业务场景中运行良好. 在这里,我们可以使用为行为驱动开发构建的工具——官方 PHP 的 Cucumber 实现——Behat.我们可以通过运行以下代码来安装它: $ php composer.phar requir…
提高OC代码质量的小心机 一.OC特性 OC 为 C 语言添加了面向对象特性,是其超集; OC 使用动态绑定的消息结构,也就是,在运行时才会检查对象类型; 接收一条消息后,究竟应执行何种代码,由运行期环境来决定,而非编译器;ps:理解C语言的核心概念有助于写好OC程序,尤其要掌握内存模型与指针. 二.在类头文件中尽量少引入其他头文件 除非有必要,否则不要引入头文件.一般来说,应在某个类的头文件中使用 向前声明@class MEPerson;来提及别的类,并在实现文件中引入那些类的头文件.这样做可…
提高Java代码质量的Eclipse插件之Checkstyle的使用详解 CheckStyle是SourceForge下的一个项目,提供了一个帮助JAVA开发人员遵守某些编码规范的工具.它能够自动化代码规范检查过程,从而使得开发人员从这项重要但是枯燥的任务中解脱出来. CheckStyle检验的主要内容 ·Javadoc注释 ·命名约定 ·标题 ·Import语句 ·体积大小 ·空白 ·修饰符 ·块 ·代码问题 ·类设计 ·混合检查(包活一些有用的比如非必须的System.out和printst…
随着富 Web 前端应用的出现,开发人员不得不重新审视并重视 JavaScript 语言的能力和使用,抛弃过去那种只靠“复制 / 粘贴”常用脚本完成简单前端任务的模式.JavaScript 语言本身是一种弱类型脚本语言,具有相对于 C++ 或 Java 语言更为松散的限制,一切以函数为中心的函数式编程思想也为开发人员提供了更加灵活的语法实现.然而,这种灵活性在带来高效的同时,也成为初学或者经验不足的 JavaScript 开发人员的噩梦.形式各异的代码风格.隐含错误的代码行为,严重影响了整体代码…
教你用一行Python代码实现并行 本文教你通过一行Python实现并行化. Python在程序并行化方面多少有些声名狼藉.撇开技术上的问题,例如线程的实现和GIL,我觉得错误的教学指导才是主要问题.常见的经典Python多线程.多进程教程多显得偏"重".而且往往隔靴搔痒,没有深入探讨日常工作中最有用的内容. 传统的例子 简单搜索下"Python多线程教程",不难发现几乎所有的教程都给出涉及类和队列的例子: #Example.py ''' Standard Prod…
前言 现代软件开发团队面临着很多挑战,这些挑战包括:产品交付期限越来越紧,团队的分布越来越广,软件的复杂度越来越高,而且对软件的质量要求越来越高. 本文分为两个章节.第一章讨论持续集成的原理,持续集成如何简化软件开发生命周期,以及静态分析如何配合持续集成.第二章研究特定的工具套件,以及在实际使 用中如何获得该套件.主要研究Jenkins持续集成和Perforce的静态分析工具(Helix QAC),并说明他们是怎样结合在一起使用,以及他们所生成的信息. 第一章 第一部分:持续集成和持续交付 持续…
手把手教你调试Linux C++ 代码 软件调试本身就是一项相对复杂的活动,他不仅要求调试者有着清晰的思路,而且对调试者本身的技能也有很高的要求.Windows下Visual Studio为我们做了很多的工作,使初学者基本上可以获得一个所见即所得的调试体验,相对来说也比较容易上手.然而在linux平台下,一切都显得有些不同,倒不是说GDB有多难,只是对于习惯了visual studio的人来说刚开始会有些不适应.然而对于那些在windows 平台下使用windbg调试代码的人来说,情况会好很多,…
转载: Java 性能优化手册 - 提高 Java 代码性能的各种技巧 Java 6,7,8 中的 String.intern - 字符串池 这篇文章将要讨论 Java 6 中是如何实现 String.intern 方法的,以及这个方法在 Java 7 以及 Java 8 中做了哪些调整. 字符串池 字符串池(有名字符串标准化)是通过使用唯一的共享 String 对象来使用相同的值不同的地址表示字符串的过程.你可以使用自己定义的 Map<String, String> (根据需要使用 weak…
Android 你可能忽略的提高敲代码效率的方式…
前言 关于微软的Visual Studio系列,真可谓是宇宙最强IDE了.不过,像小编这样的菜鸟级别也用不到几个功能.今天给大家介绍一个比较实用的功能吧,把Visual Studio 2017里面写好的代码一键上传到GitHub.毕竟,在这个面试官一上来就要GitHub地址的年代,还不会用全球最大的同性交友网托管代码,都不好意思说自己是搞技术的了. 准备工作 首先确保做好以下准备工作了: 下载安装好Visual Studio 2017 注册好一个GitHub账号 会写helloworld 差不多…
每日推荐 Eyepetizer-in-Kotlin:一款简约的小视频app,带你走进kotlin 作为学习kotlin的一款app,在撸代码的过程中学习kotlin的语法及特性. Eyepetizer-in-Kotlin适合初学者作为学习kotlin语言的一个项目,可以在做项目的同时体验到kotlin语言的优点. https://github.com/LRH1993/Eyepetizer-in-Kotlin 本文作者 本文由大力-哥投稿. 大力-哥的博客地址: http://blog.csdn.…
jdk1.7推出的Fork/Join提高业务代码处理性能 jdk1.7之后推出了Fork/Join框架,其原理个人理解为:递归多线程并发处理业务代码,以下为我模拟我们公司业务代码做的一个案例,性能可提升75%: **下边这个类是模拟现有业务代码写的** package NoForkJoin; import forkJoinTest.Row; import forkJoinTest.Student; import java.util.ArrayList; import java.util.List…
1.不要使用相对路径 常常会看到: require_once('../../lib/some_class.php'); 该方法有很多缺点: 它首先查找指定的php包含路径, 然后查找当前目录. 因此会检查过多路径. 如果该脚本被另一目录的脚本包含, 它的基本目录变成了另一脚本所在的目录. 另一问题, 当定时任务运行该脚本, 它的上级目录可能就不是工作目录了. 因此最佳选择是使用绝对路径: define('ROOT' , '/var/www/project/'); require_once(ROO…
在这篇文章中,我将通过不同的自动化工具如CheckStyle,FindBugs,PMD以及Android Lint来介绍(如何)提高你的安卓代码质量.通过自动化的方式检查你的代码非常有用,尤其当你在一个团队中工作,为了在你的代码中保持严格的语法格式以及避免很多坏习惯和错误.我将仔细地介绍如何在你空闲的时候直接运用这些工具通过Gradle构建脚本以及如何配置它们. Fork该示例 我强烈建议你拷贝下这个项目工程,尽管我将介绍的案例都是来自它.与此同时,你将能够测试下自己对这些工具的了解情况. 关于…
CheckStyle是SourceForge下的一个项目,提供了一个帮助JAVA开发者遵守某些编码规范的工具.它可以自己主动化代码规范检查过程.从而使得开发者从这项重要可是枯燥的任务中解脱出来. CheckStyle检验的主要内容  ·Javadoc凝视  ·命名约定  ·标题  ·Import语句  ·体积大小  ·空白  ·修饰符  ·块  ·代码问题  ·类设计  ·混合检查(包活一些实用的比方非必须的System.out和printstackTrace) 从上面能够看出,CheckSty…
1.不要使用相对路径 常常会看到: require_once('../../lib/some_class.php'); 该方法有很多缺点: 它首先查找指定的php包含路径, 然后查找当前目录. 因此会检查过多路径. 如果该脚本被另一目录的脚本包含, 它的基本目录变成了另一脚本所在的目录. 另一问题, 当定时任务运行该脚本, 它的上级目录可能就不是工作目录了. 因此最佳选择是使用绝对路径: define('ROOT' , '/var/www/project/'); require_once(ROO…
[规范习惯]命名规范1-命名空间 使用<Company>.<Component>2-程序集不必与命名空间同名3-命名空间使用附复数4-避免与FCL的类型重名5-类型名称用名词6-接口名称用形容词,以I做前缀7-派生类命名用基类名做后缀8-泛型参数以T做前缀9-枚举名称用复数,枚举元素用单数10-公开元素命名用PascalCasing法[属性/字段/方法]11-私有元素命名用camelCasing法[变量/参数名/私有字段]12-使用类名作为属性名13-有条件使用前缀(不建议)14-…
随着前端JavaScript代码越来越重,如何组织JavaScript代码变得非常重要,好的组织方式,可以让别人和自己很好的理解代码,也便于维护和测试.模块化是一种非常好的代码组织方式,本文试着对JavaScript模块化开发的一些基础知识和具体使用做一些阐释. 何为模块化开发? “模块是为完成某一功能所需的一段程序或子程序.模块是任何robust(健壮.强壮)的应用架构不可缺少的一部分,是系统中职责单一且可替换的部分.” 简单理解:模块就是实现特定功能的一组方法,用用来实现代码的封装.增强代码…
一.分析  常量的声明是每一个项目中不可或缺的,在Java1.5之前,我们只有两种方式的声明:类常量和接口常量.不过,在1.5版之后有了改进,即新增了一种常量声明方式,枚举常量.代码如下: enum Season{ Spring,Summer,Autumn,Winter; } 二.场景  那么枚举常量与我们的经常使用的类常量和静态常量比有什么优势呢?  1.枚举常量更简单  先把Season枚举翻译成接口,代码如下: interface Season{ int Sprint = 0; int S…
1.不要使用相对路径 常常会看到: ? 1 require_once('../../lib/some_class.php'); 该方法有很多缺点: 它首先查找指定的php包含路径, 然后查找当前目录. 因此会检查过多路径. 如果该脚本被另一目录的脚本包含, 它的基本目录变成了另一脚本所在的目录. 另一问题, 当定时任务运行该脚本, 它的上级目录可能就不是工作目录了. 因此最佳选择是使用绝对路径: ? 1 2 3 4 define('ROOT' , '/var/www/project/'); re…
如何编写可维护的JavaScript代码 代码风格及规范 构建检查工具 jshint配置 http://jshint.com/docs/options/ http://www.cnblogs.com/code/articles/4103070.html http://www.iteye.com/news/28028-JavaScript-code-style-guide https://github.com/fouber/fis-lint-jshint https://github.com/al…
一.OC特性 OC 为 C 语言添加了面向对象特性,是其超集; OC 使用动态绑定的消息结构,也就是,在运行时才会检查对象类型; 接收一条消息后,究竟应执行何种代码,由运行期环境来决定,而非 编译器; ps:理解C语言的核心概念有助于写好OC程序,尤其 要掌握 内存模型 与 指针. 二.在类头文件中尽量少引入其他头文件 除非有必要,否则不要引入头文件.一般来说,应在某个类的头文件中使用 向前声明(@class MEPerson;)来提及别的类,并在实现文件中引入那些类的头文件.这样做可以尽量降低…
概述 Java语言提供了Annotation的机制,让描述性的元数据能够和代码共存.通常我们可以利用Annotation,来做一些标志性的说明.然而Annotation必须和相应的解析工具一起才能工作.合理的运用Annotation,会带来一些额外的效果. 本文不讨论Annotation的基础语法以及基础使用方法. Android用Annotation干了什么? Java这种强类型的语言,在编写代码的时候,编辑器就会通过语法检查,来阻止一些错误的发生.相比于一些弱类型的语言,更安全.Annota…
http://www.cnblogs.com/52php/p/5658031.html 不要直接使用 $_SESSION 变量 某些简单例子: $_SESSION['username'] = $username; $username = $_SESSION['username']; 这会导致某些问题. 如果在同个域名中运行了多个应用, session 变量可能会冲突. 两个不同的应用可能使用同一个session key. 例如, 一个前端门户, 和一个后台管理系统使用同一域名. 从现在开始, 使…
17.不要直接使用 $_SESSION 变量 简单例子: $_SESSION['username'] = $username; $username = $_SESSION['username'];   改进后: define('APP_ID' , 'abc_corp_ecommerce');  //Function to get a session variable  function session_get($key)  {  $k = APP_ID . '.' . $key;  if(iss…
续上.... 第二章 部署示例:Jenkins and Helix QAC工具 第一节 Jenkins 作为持续集成系统 现在有很多持续集成工具,既有免费的,也有商业的.最近的研究显示,Jenkins正发展成为最受欢迎的持续集成工具.Jenkins是Hudson持续集成系统的一个分支,但是Jenkins拥有最活跃的生态系统. 在MIT许可下,Jenkins是免费的,但是和一些开源软件一样,Jenkins也有付费版本,并会提供技术支持.虽然Jenkins是一个开源项目,但是对核心代码所作的所有修改…
1.背景: 学习java时,教材中关于如题问题,只有一小节说明,而且要自己写麻烦的配置文件,最终结果却只能转换为jar文件.实在是心有不爽.此篇博客教你如何方便快捷地把java代码,打包成jar文件以及转换为exe可执行文件 2.前言: 我们都知道Java可以将二进制程序打包成可执行jar文件,双击这个jar和双击exe效果是一样一样的,但感觉还是不同.其实将java程序打包成exe也需要这个可执行jar文件. 3.准备: eclipse或Myeclipse以及exe4j(网上有软件和帐号下载)…
准备 相信各位对python的语言简洁已经深有领会了.那么,今天就带大家一探究竟.看看一行python代码究竟能干些什么大新闻.赶紧抄起手中的家伙,跟我来试试吧. 首先你得先在命令行进入python.像下面一样. 1> python2Python 3.6.0 (v3.6.0:41df79263a11, Dec 23 2016, 08:06:12) [MSC v.1900 64 bit (AMD64)] on win323Type "help", "copyright&q…