erlang spec

这里陆陆续续添加一些自己总结或借鉴的erlang代码规约

[强制] [推荐] [建议]

=============================

命名

原则—— 命名首先应该清晰,然后才是简洁

模块名:

[强制] 除了像util, time_util, list_util这种通用的util模块外, 项目里其他模块的名字都要统一加上前缀,如: xs_......

函数名:

变量名:

[强制] 函数内变量更新“赋值”,后缀序号不取1,而是直接从2开始(1不如2明显,而且容易和字母 l 混淆)

反例:   Player1 =  Player#player{exp = ...},

            % 此处是一些逻辑处理

            Player2 = Player1#player{lv = ...},

正例: Player2 =  Player#player{exp = ...},

            % 此处是一些逻辑处理

            Player3 = Player2#player{lv = ...},



宏名:

进程字典的key名:

[推荐]


============================

函数相关

1.  [推荐]  除非有充分的理由, 否则不要拿“参数匹配某个特定值”这种做法来代替业务逻辑的case或if 判断(这种写法不直观清晰,不便于代码阅读和维护)

反例:

foo(#player{last_save_time=0}) ->

% 执行last_save_time为0时的处理

% ...;

foo(#player{last_save_time=LastSaveTime}) ->

% 执行last_save_time不为0时的处理

% ...

正例: 宁可直接在foo()函数里写case  LastSaveTime == 0 of的判断, 更好的则是封装一些判断的小函数, 然后调用这些小函数。


===========================================================

进程字典

1. [强制] 进程字典的get, put调用,必须加erlang: 前缀,避免和自定义的函数混淆,也更清晰。

反例:  get(xxx),   put(xxx, yyy)

正例:   erlang:get(xxx),    erlang:put(xxx, yyy)


======================================================

注释

1. [强制] 

所有位于行末的注释,统一用%(一个%)

模块(包括头文件,配置文件)开头的模块说明,用%%%(三个%)作为注释

 函数定义处的函数说明,用%%(两个%)作为注释, 函数内部统一用%(一个%)作为注释

记录体定义处的记录体说明,用%%(两个%)作为注释, 记录体内部统一用%(一个%)作为注释

宏定义处用%%(两个%)作为注释,但如果注释是位于行末,则用%(一个%)


===========================================

头文件

1. [强制] 避免头文件被重复包含的写法,统一如下:

假设有一个player.hrl文件,则:

-ifndef(__PLAYER_HRL__).

-define(__PLAYER_HRL__, 0).

.........

-endif.

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容