一.单一职责
Angular是基于WebComponents思想设计而来,所有核心概念包括组件、服务、指为都是遵循单一职责原则的,这龙员佳实践中很重要的一条,它有助于代码保持良好的可读性和可维护性,而且极大地方便单元测试。Anglar 应用中创建的所有组件、服务或者其他的模块都应该遵循单一职责原则,以下是关于单一职责原则在Anglar开发中的具体要求。
1.单一文件
单一规则是指在一个文件中,应该只定义一个组件、服务或者指令等。
一个组件对应一个文件可以保证代码简单易读,具有更好的可维护性,正常一个文件的代码量不应超过400行
,如果太长,可能是组件拆分得不够细致.而且在团队开发中,不同成员修改的功能存在于不同的文件中,可以在一定程度上避免跟其他成员的修改产生冲突,大大减少耦合,例如,例如,在向卷调查系统的组件树中,首页组件HomeComponent.登录组件LoginComponent.注册组件RegisterComponent 等组件一对应着home.component.ts.login.component.ts.register.component.ts 等文件,符合一组件一文件的规则。
2.简单函数
简单函数是指定义的丽数尽量功能简单、目的明确、职责单一。保持函数简单的好处和单一规则类似。都是为了代码的易读易维护。通常一个函数的代码不应超过75行,目的更明确且职责更单一的函数具有更高的可
复用性,也便于进行测试。
二.命名约定
关于命名约定是一个老生常谈的问题,但它确实是编写高可维护性和易读性代码非常重要的规范。良好的命名规范能起到见名知意的效果,能使维护代码的开发者仅仅在只通览代码文件结构或名称的情况下就能大致了解整个项目,并且在需要了解细节的情况下能快速定位到相应的代码位置。对于Angular项目,也有关于命名约定方面的最佳实践
1.命名风格统一
使用统一的命名风格是指保持命名方式和命名模式一致。在Angular中通常采用feature.type.ts 的命名模式,即先描述特性,再描述类型。例如用户列表组件的文件名为userlist.component.ts.而用来做日志上报的日志服务的文件名为loggerservice.s或自定义管道文件命名为lipsispipe.s等。统一命名风格的好处很明显,例如我们可以通过在IDE中搜索home关键词就能找出所有与首页相关的组件、服务、模板等文件,或者通过搜索component关键字找出项目中定义的所有组件文件等。并且通过这些文件的名称,开发者可以轻易地判断出这个组件是为哪个功能特性编写的。这极大地提高了定位代码的效率,对于越大型的项目作用越明显。
2.名称格式保持一致
对于文件的名称,通常使用.点号来分隔特性和类型,而对于特性名称由多个英文单词组成的情况,则可以使用短横线作为分隔符,例如上面提到的用户列表组件的文件名称就可以命名为user-list.component.ts。
使用完整的类型名称,不要使用简写。例如使用.service 作为服务的类型描述,而不是使用.srv、.SVC、.serv 等容易让人产生困惑的命名。
使用一致的名称格式还有一个好处,就是可以方便地使用正则表达式匹配的方式去做一些自动化任务,例如自动在组件文件开头添加统一的文件注释、版本号等。
3.选择器命名约定
对于组件的选择器,通常采用“烤肉串”命名形式,例如在一个问卷调查系统实例中的问题大纲组件,其sledor 属性的值为qustionaire-outline示.示例代码如下:
@Component({
inputs:['questionaire'],
selector:'questionaire-outline',
template:'...'
})
export class QuestionaireOutline{
private questionairs:QuestionaireModle;
constructor(){}
而对于一般指令的选择器,通常采用首字母小写的驼峰命名形式,以便于与组件的选择器命名区分开来,例如:
@Directive({selector:'[myUnless]'})
export class UblessDirective{
@Input('myUnless') condition :boolean;
}
未完待续!
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。