保持一样的代码风格
1. 变量名(大小写, 命名方式)
ID vs Id, UserId Vs Uid
2. 空格位置
{a, b, c} VS {a,b,c}
3. 其他
* 驴非驴,马非马
不要用export_all
高度封装
有利于代码优化及重构
* default环境下不用export_all便于发现问题,线上开启export_all便于调用函数
不要用import
可读性差
不能区分内部函数和外部函数
不利于代码跳转
* BIF除外
减少嵌套
三层嵌套以上,代码可读性差
Tips:
拆成小函数
Pipe方式-统一输入输出
崩溃方式 + badmatch方式
尽量不要用进程字典
大部分书都教育我们不要用进程字典,有副作用
put(X) 并没有指定进程,也许你正在给gen_server的进程put而不是玩家进程
尽量使用Specs
1. 增强可读性 否则调用者主要靠猜
2. 有利于暴露错误
3. 参与dialyzer分析
* 起码写个注释
注释格式
模块注释 %%%
函数注释 %%
行注释 %
不用保留旧代码
删除旧代码,而不是保留
如果想查阅旧代码,可以通过版本管理工具
写有确定性的函数
不要在check函数里面执行副作用操作,比如修改ETS
Do undo 在同一段代码里面
比如open和close文件
* 一段代码的意思是,一个函数。open放主函数,close放子函数都不行,必须也在主函数
不应有debug的代码,比如io:format
没有意义
消耗处理时间
使用lager:debug 线上level等级调整为info