《.NET最佳实践》与Ext JS/Touch的团队开发

  • 概述
  • 持续集成
  • 编码规范
  • 测试
  • 小结

概述

有不少开发人员都问过我,Ext JS/Touch是否支持团队开发?对于这个问题,我可以毫不犹豫的回答:支持。原因是在Sencha官网博客中客户示例中,有不少项目都是基于团队模式开发的。

那为什么会出现这个问题?我觉得问题的关键在于不知道如何去进行模块独立调试或做最终的整合。对于这个问题,我觉得《.NET最佳实践》这本书(下文中简称为实践一书)或许会给大家带来一点启示。虽然这本书是针对.NET而写的,但我觉得,这对于Ext JS/Touch,甚至于其他开发语言的开发,还是有不错的借鉴意义的。

《.NET最佳实践(Pro .NET Best practices)》是.NET领域公认的经典著作,总结了大量.NET开发人员认为好用切高效的最佳实践,针对性地阐明了如何恰当地在个人、小组和行业中应用这些最佳实践,为个人和开发团队提高开发效率提供了绝佳指导

持续集成

在实践一书中,持续集成可以说是书中集大成于一身的实践,其目的就是要建立一个CI服务器,然后在该服务器上以自动化的形式实现代码的重新生成、单元测试、分析、打包、部署和稳定性测试。如果真要实现这个,对于小公司来说可能暂时还没这个能力,但我们可以借鉴其中的方式,例如,组件一台服务器,让开发人员不定时或定时的将已完成的可以进行测试的代码上传至服务器,让测试小组展开部分测试。而当服务器又更新的时候,可以通过客户端程序提醒开发人员去下载别人已经完成的代码,以便提供一个完整的开发环境以测试自己模块。

编码规范

在实践一书中,很强调编码规范,因为这有助于团队成员之间有一致的语言,并彼此配合。而作为一个组织、各个团队之间保持,有助于实现各个团队之间保持一致,有助于实现遵守公认的标准、有效的开发原则和好的实践

对于Ext JS/Touch来说,它自身就是基于一定的编码规范来实现的,如命名空间、类的名称等等。在项目中遵循并延续这个规范,我觉得是最好不过的了,因为这有助于实现项目目标,而且框架自身就是使用这些规范实现,是一个极好的示例。当然,项目中还可以根据这些规范做更改与完善,以便更好的实现目标。

在项目开始之初,熟悉规范的开发人员,非常有必要向还不熟悉规范的开发人员介绍他们的经验,以便让这些开发人员尽早熟悉这些规范。在项目过程中,如果有新加入的项目成员,也很有必要向他们介绍这些规范,以便尽快融入到项目开发之中。以上这些都是实践一书的经验之谈,值得深入了解。

测试

实践一书对测试很重视,这也是当今的一个潮流。不过,对于javascript的测试来说,还是处于发展阶段,尤其是对于Ext JS/Touch的测试(包括工具),还是处于一种朦胧状态。虽然在Sencha官网博客上有不少介绍这方面的博客文章,但总的来说还是比较缺乏这方面的资料和经验,因而,如果真要在这方面下功夫,就要下点狠功夫去研究了。我觉得这个是值得去做的,因为熟悉和掌握这些方法,尽管未来不一定使用Ext JS/Touch来进行开发,但对公司未来来说,还是大有脾益的。

对于Ext JS/Touch这种可以将前端和后端分开开发的框架来说,我觉得,为了便于测试,把测试重点放在如何自动为前端提供虚拟数据进行测试,是值得先行研究的。不过,要实现全端与后端的分离,首先要做的工作就是数据的标准化工作,这个在我的书中都有具体的说明,在这就不赘述了。

小结

虽然实践一书的基本内容是基于.NET的,但很多实践方法其实也是适用于其他开发的,因而多看看这类的书,对于团队开发来说还是相当不错的。对于Ext JS/Touch来说,是非常适于团队开发的,而其具体的实现方式,可能目前还没有成熟的套路,但借鉴一下其他团队开发方式的思路,我觉得是可行的,而我推荐的就是实践一书。希望这些内容对大家有点帮助。

转载于:https://www.cnblogs.com/hainange/p/6334135.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/460239.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Cocos2d-x 3.2 学习笔记(四)学习打包Android平台APK!

从cocos2dx 3.2项目打包成apk安卓应用文件,搭建安卓环境的步骤有点繁琐,但搭建一次之后,以后就会非常快捷! (涉及到3.1.1版本的,请自动对应3.2版本,3.x版本的环境搭建都是一样的) 一…

ceph操作相关命令整合

ceph基本操作: /etc/init.d/ceph -a start/stop //即在所有节点上执行 单个操作:     start/stop ceph-osd id{id}     start/stop ceph-mon id{hostname}     start/stop ceph-mds id{hostname} 集群监控:监控osd状态、monitor …

java 中violate_Java中的volatile关键字及Cache更新

Volatile [ˈvɑːlətl],中文解释:反复无常的,易变的,不稳定的。volatile的本意是告诉编译器,此变量的值是易变的,每次读写该变量的值时务必从该变量的内存地址中读取或写入,不能为了效率使用对…

mechanize (1)

最近看的关于网络爬虫和模拟登陆的资料,发现有这样一个包 mechanize [mekə.naɪz]又称为机械化的意思,确实文如其意,确实有自动化的意思。 mechanize.Browser and mechanize.UserAgentBase implement the interface of urllib2.OpenerDirect…

ubuntun安装ssh,并远程链接服务器操作

SSH是一种以安全、加密方式连接远程主机或服务器的方法。SSH服务器接受从有SSH的客户机的连接,允许操作者象在本地一样地登录系统。你可以用SSH从远程运行shell和X程序。 (1)安装SSH服务器 加入Universe和Multiverse源后,用新…

java微信web支付开发_微信支付java开发详细第三方支付功能开发之支付宝web端支...

这段时间把支付基本搞完了,因为做的过程中遇到许多问题,特地记录下来,同时方便其他java coder,废话少说,下面开始。整体思路:在后台,根据参数创建支付宝客户端AlipayClient,发送参数…

Android 监控网络状态

Html代码public static boolean isNetworkAvailable(Context context) { ConnectivityManager connectivity (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE); if (connectivity null) { Log.i("NetWorkS…

Tokyo Tyrant安装和配置

Tokyo Tyrant安装和配置Tokyo Cabinet是日本人开发的一款DBM数据库,读写速度非常快。Tokyo Tyrant也是由同一作者开发的Tokyo Cabinet网络接口,兼容memcached协议,也可以通过http协议进行数据交换。Tokyo Tyrant加上Tokyo Cabinet构成一款支持…

mysql 最值复杂查询_MySQL高级查询

我们使用SQL查询不能只使用很简单、最基础的SELECT语句查询。如果想从多个表查询比较复杂的信息,就会使用高级查询实现。常见的高级查询包括多表连接查询、内连接查询、外连接查询与组合查询等,今天我们先来学习最常用、面试也很容易被问到的连接查询。我…

java事件类_关于Java事件类的一些思考

第一条是关于添加监听类时,如JButton button newJButton();button.addActionListener(this);如果进行两次注册监听类如再加一条button.addActionListener(this);那么当点击一次button时,button实际上会返回两次结果,相当于点击了两次button。…

java对象和json对象之间互相转换

2019独角兽企业重金招聘Python工程师标准>>> import java.util.ArrayList;import java.util.Collection;import java.util.Iterator;import java.util.List;import net.sf.json.JSONArray;import net.sf.json.JSONObject;public class MainClass { public static…

HDU 3397 线段树 双懒惰标记

这个是去年遗留历史问题,之前思路混乱,搞了好多发都是WA,就没做了 自从上次做了大白书上那个双重懒惰标记的题目,做这个就思路很清晰了 跟上次大白上那个差不多,这个也是有一个sets标记,代表这个区间全部置…

mysql接口可以重载吗_php 到底可不可以重载

展开全部php 作为一种弱类型语言,本身不能像强类型如java ,c那样,直接的实现重载。不过可e68a84e8a2ad62616964757a686964616f31333337393539以通过一些方法,间接的实现重载。使用一个统一的函数来实现重载。该方法要使用func_get…

SQL Server :理解数据记录结构

原文:SQL Server :理解数据记录结构在SQL Server :理解数据页结构我们提到每条记录都有7 bytes的系统行开销,那这个7 bytes行开销到底是一个什么样的结构,我们一起来看下。 数据记录存储我们具体的数据,换句话说&#…

京东云擎提供了免费的wordpress一键安装功能了

1. 京东云擎(http://jae.jd.com)提供了免费的个人博客WordPress一键安装功能了,如下图,给开发者分享福利! 免费的应用,提供了源码,提供了数据库: 我之前把文章发到首页,遭到了封杀!本…

java 对象加密_java.security包实现对象加密

Java原生支持常见的加密算法,例如DES、RSA。随便写点关于Java安全包的东西。Java.security.Provider对象官方的解释是:实现了 Java 安全性的一部分或者全部。provider 可能实现的服务包括:算法(如 DSA、RSA、MD5 或 SHA-1),密钥的…

ajax请求模拟登录

前台 if (Session["username"] ! null){<div class"login"><span style"width:155px;height:85px;display:inline-block;margin-left:50px;margin-top:25px;text-align:center">(Session["username"]) 您好&#xff01;&…

Distinct源码分析

以前比较两个List数据&#xff0c;筛选出所需要的数据时候&#xff0c;一直套两层for循环来执行。用到去重(Distinct)的时候&#xff0c;这两个需求其实都是一样的&#xff0c;都是需要比较两个集合&#xff0c;查看了下它的源码&#xff0c;里面确实有值得借鉴的地方。 先附上…

python3图片转代码_python3图片转换二进制存入mysql示例代码

python3图片转换二进制存入mysql示例代码发布于 2014-09-29 18:00:01 | 198 次阅读 | 评论: 0 | 来源: 网友投递Python编程语言Python 是一种面向对象、解释型计算机程序设计语言&#xff0c;由Guido van Rossum于1989年底发明&#xff0c;第一个公开发行版发行于1991年。Pytho…

oracle面试题[关于case when的用法]

表中有A B C三列,用SQL语句实现&#xff1a;当A列大于B列时选择A列否则选择B列&#xff0c;当B列大于C列时选择B列否则选择C列declare v_sal number:2000; v_tax number; begin case when v_salv_tax:v_sal*0.03; when v_salv_tax:v_sal*0.04; when v_salv_tax:v_sal*0.05; whe…