普遍来说: 好的代码具有以下的一些特征
1. 容易被理解, 思路清晰, 表述准确无歧义
2. 稳健性好, 零错误; 或者说有一个错误处理机制, 针对不同的错误指出错误的具体信息, 更好的情况同时给出正确的建议
3. 高内聚, 低耦合
4. 核心代码的稳定性, 或者说加一层保护机制, 保证核心代码不被破坏
5. 优秀的性能
6. 可移植, 可以被轻易地嵌入到其他页面或系统, 不破坏目标站点, 保证源站点不受影响 正常执行
7. 良好的兼容, 可以运行于多个平台
8. 易扩展
......
个人的一些理解:
1. 组织代码的一个方式上的转变。写代码就跟说话一样, 表述清楚自己的意思, 要做什么。"语义化"你的代码,并针对业务场景设计清晰良好的结构;让别人能够轻而易举的修改而不引入错误
2. 多数情况下我们可以规避掉错误, 但也不排除意料之外的错误; 那么一旦程序某位置出错了, 怎么捕获错误? 按什么样的粒度去捕获错误? 还有对错误的记录收集, 是否需要一套备用处理逻辑;
3. 模块化便是一种很好的方案, 再运用一些技巧 (如设计模式,用多态取代表达式) 去组织代码. 并选择恰当的数据结构
4. 核心代码只读(如属性私有化, 属性定义为不可配置,或是修改或删除都是返回一个新的引用 -比如 immutable.js), 如果依赖项错误或变更,采用备选方案 ; 对修改关闭对扩展开放。
5. 存储和读取, 修改和删除, 逻辑语句的优化,等;
缓存的使用, 但得特别注意缓存的时效性,如果伴随有IO操作,需要额外处理(防止大量的IO操作导致卡死);
异步 + 切片 + 预缓存 + 多线程 + GPU;
数据归一化;
......
6. 参考 webAssembly,借助于规范,多系统之间遵循同样的编/解码,以实现多平台之间的通用性;(内存空间)隔离,如果两者之间需要通信,可以通过传递消息的方式传送数据,传送的数据因为是"共享的", 可能还需要"锁" , 处理竞争的情况;
7. 提前检测; 或是提供一套跨平台的处理工具或方案, 以运行于多个平台
8. “插件化”你的程序
尽管一般开发时上线时间紧迫 , 能够在规定时间做出来就已经谢天谢地了, 但也得保证做到第一, 第二两条要求。代码做出来能够稳定地运行, 需求变更自己能马上理清原先的思路。