flex编码约定与最佳实践

上传人:xh****66 文档编号:57134678 上传时间:2018-10-19 格式:DOCX 页数:33 大小:30.71KB
返回 下载 相关 举报
flex编码约定与最佳实践_第1页
第1页 / 共33页
flex编码约定与最佳实践_第2页
第2页 / 共33页
flex编码约定与最佳实践_第3页
第3页 / 共33页
flex编码约定与最佳实践_第4页
第4页 / 共33页
flex编码约定与最佳实践_第5页
第5页 / 共33页
点击查看更多>>
资源描述

《flex编码约定与最佳实践》由会员分享,可在线阅读,更多相关《flex编码约定与最佳实践(33页珍藏版)》请在金锄头文库上搜索。

1、Flex 编码约定与最佳实践(中文)时间 : 2008-07-07 作者:佚名 编辑:本站 点击: 827 评论 Flex 不久前发布了 Flex 的编码约定与最佳实践文档(原文: http:/ ,标准发布之后引起 了广泛的关注和大量的争议。其实很久以来的开发经历使自己养成了一套成型的开发习惯, 所以没想做过多改变,对这些东西也就没有多加关注了。直到昨天在 CSDN 上看到了一篇 评价这个文档的文章(找不到链接了。 。 。 ) ,感觉大家对这个文档颇有微辞,于是今天把文 档下下来详细的看了下。感觉 Adobe 这玩意弄的有点仓促,有点为了“标准”而“标准” 的感觉,有了很多不必要的条条框框,甚

2、至内容结构都有些问题。不过也有不少值得参考 的地方,读文档的时候草草翻译了一下,希望对大家有所帮助(没空间,只能贴了):Flex SDK 编码标准与最佳实践(by 阿顺 http:/ 命名;2. 语言使用 3. 文件组织 4. 格式 5. ASDoc1. 命名缩写:能避免就避免,代码清晰永远比减少打字重要;但是也要记住一些标准化了的通用 的缩写,比如 acc(accessiblility) , auto(automatic), impl(implementation), info(infomation), num(number), min(minimum), max(maximum), nav

3、(navigation), regexp(regular expression), util(utility)等等。使用缩写时尽量和 Flex 保持一致;首字母缩写词:要么全部大写要么全部小写。当首字母缩写词当成一个标志符或者标志符 的开始部分,且这个标志符必须以小写字母开始的时候才采用全部小写的方式。词语边界:标志符多个单词构成的时候,单词首字母大写,或者词语以下划线隔开,比如 LayoutManager, object_proxy;当多个首字母缩写词邻接的时候遵循首字母缩写词规范,但 是尽量避免。指定类型的名字:如果你要将某一个类型组合到一个名字中去,那么把在加在最后,比如 命名命名一个

4、border 图形可以使用:border, borderSkin, borderShape;最好的名字就是类 型的小写比如:Button 的实例 button。包命名:使用小写字母,之间大写字母隔开,比如 controls, listClasses;包名称最好是名词 或者动名词,不要用动词、介词、形容词、副词之类。当一个包的作用是实现某一功能的 时候最好使用动名词,比如 bingding, logging, messaging, printing;支持组件 FooBar 的最好 写作 fooBarClasses;文件名称:对于重要的 API 文件,文件名称必须和重要的公开 API 保持一致,但

5、是 include 文件不一定要遵循此规则;对于包含文件比如用作 Styles 的,大写字母开始,各个单词隔 开,且在最后加上 Styles: BorderStyles.as, ModalTrasparencyStyles.as; 对于资源文件小写字 母开始,下划线隔开:icon_align_left.png;命名空间名称:小写字母、下划线隔开:mx_internal, object_proxy接口名称:字母“I”开始、大写字母间隔:IList, IFocusManager, IUID类名称:大写字母开始、大写字母间隔:Button, FocusManager;Event 子类(FoobarE

6、vent) ,Error 子类(FooBarError) ,皮肤类(FooBarBackground, FooBarBorder, FooBarIcon.),utility 类(FooBarUtil,不是 FooBarUtils,包是复数,类是单数) ;事件名称:小写字母开始、大写字母间隔:move, creationCompleteStyle 名称:小写字母开始,大写字母间隔:color, fontSize;字符属性枚举值:auto, filesOnly;常量命名:全部大写字母,下划线间隔:OFF, DEFAULT_WIDTH,如果常量是一个字符串, 那么常量命名和常量值保持一致: ;属性名

7、命名:小写字母开始,大写字母间隔: i, width, numChildren;使用 i 作为选还变量,n 作为循环上界;使用 j 作为循环变量,m 作为循环上界:for (var i:int = 0; i ;而不是 var node:XML = new XML(“); XML 属性值要使用双引号括起来,不要使用单引号。Class:只有当需要在区分两个导入类的时候才使用类的全名,正确做法(Yes:):import mx.controls.Button;.var b:Button = new Button();错误做法(No:):import mx.controls.Button;.var b:

8、Button = new mx.controls.Button();正确做法:import mx.controls.Button;import my.controls.Button;.var b:Button = new mx.controls.Button();表达式相关:对于通用的操作符(+, -, *, /, return item.label; (No)但是不要使用嵌套的三元操作符;new:即使构造的类不带参数也要使用圆括号:var b:Button = new Button(); (yes) var b:Button = new Button;(No) ;声明:每一个声明语句都使用分

9、号结尾。include:使用 include 而不是已废弃的#include,和前面一样,每个声明语句以分号结束; 使用相对路径而不是绝对路径;import:导入明确的类,避免使用通配符“*” ;use namespace :避免使用,非公开名字空间引用使用“:”:Yes:import mx.core.mx_internal;/ Later, in some method.mx_internal:doSomething(); No:import mx.core.mx_internal;use namespace mx_internal;/ Later, in some method.doSom

10、ething();if:当 if/else 分支只有一句声明的时候,不要用括起来;Yes:if (flag)doThing1();if (flag)doThing1();elsedoThing2():No:if (flag)doThing1();if (flag)doThing1();elsedoThing2();但是如果有一个分支有多行语句,那么都用括起来:Yes:if (flag)doThing1();elsedoThing2();doThing3();No:if (flag)doThing1();elsedoThing2();doThing3();对于多个错误检查,使用串行的表达方式,检

11、测错误立即返回,正确值最后返回。不要用 嵌套的形式,这样会使整个逻辑看起来很凌乱。Yes:if (!condition1)return false;.if (!condition2)return false;.if (!condition2)return false;.return true;No:if (condition1).if (condition2).if (condition3).return true;return false;for:循环体使用括起来,即使只有一行的情况下也是如此。循环上界需要计算的情况下 将它存入本地变量,防止多次重复计算。Yes:var n:int = a.

12、length;for (var i:int = 0; i n; i+).No:for (var i:int = 0; i a.length; i+).循环变量的声明放入圆括号内,除非这个变量需要多次重复使用。Yes:for (var i:int = 0; i 3; i+)No:var i:int;for (i = 0; i 3; i+).while:循环体使用括起来,即使只有一行的情况下也是如此。do:循环体使用括起来,即使只有一行的情况下也是如此。Switch:每一个 case 语句都用括起来,在块里面最后加上 return 或者 break 语句。如 果你想返回值,那么使用 return。

13、return 后面不必加 break。default 部分和 case 部分一样:Yes:switch (n)case 0:foo();break;case 1:bar();return;case 2:baz();return;default:blech();break;No:switch (n)case 0:foo();break;case 1:bar();break;case 2:baz();return;break;default:blech();return:返回值不加不必要的圆括号。在函数的中间返回也是可以的。声明:一行不声明多个变量。Yes:var a:int = 1;var b:

14、int = 2;No:var a:int = 1, b:int = 2;override:放在第一个。override protected method measure():void(Yes) protected override method measure():void(No) ;存取标志:在用户没有显式声明的情况下存储标志是 internal,避免使用默认声明,在必要的地方显式声明。在需要对 API 进行 public 或 protected 声明之前需仔细考虑,因为经过这 种类型声明的函数需要建立文档,并且在正式废弃此 API 之前项目都必须支持此类 API。static:置于存取标志

15、之后。比如 public static const MOVE:String = movevar b:int = g(a - 1) + g(a + 1);var c:int = g(b - 1) + g(b + 1);return (a * b * c) / (a + b + c);No:private function f(i:int, j:int):intvar a:int;var b:int;var c:int;a = g(i - 1) + g(i + 1);b = g(a - 1) + g(a + 1);c = g(b - 1) + g(b + 1);return (a * b * c) / (a + b + c);本地变量的作用域是整个函数而不是一个块,一个变量在一个函数范围内只需要声明一次。Yes:var i:int;for (i = 0; i n; i+).for (i = 0; i n; i+).No:for (var

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 社会民生

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号