# MacroProLanguage **Repository Path**: alanli0/MacroProLanguage ## Basic Information - **Project Name**: MacroProLanguage - **Description**: The most delicious programmer language - **Primary Language**: Go - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2020-05-22 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## 综述 - [x] [c](c/README.md) - [x] [go](go/README.md) - [x] [python](python/README.md) - [ ] [cpp](cpp/README.md) - [ ] [java](java/README.md) - [x] [javaScript](javascript/README.md) - [ ] [node](node/README.md) - [ ] [Typescript](TypeScript/README.md) ## 基本要求 - 要有敬畏心,认真对待你的每一行代码、注释、文档。 - Coding Style,如果有要求,应该严格遵循,任何例外的情况需要讨论决定。 - 可读性,要容易理解,命名要具有足够描述性,不能有歧义,代码路径、结构要清晰、简洁。 - 一致性,包括但不限于标识符命名、错误处理、日志格式、文件组织方式、HTTP API 接口设计、UI 交互等各个方面,越是一致的系统越容易上手,越容易维护,反之则维护成本越高。 - 健壮性,进行必要的输入验证(不要过度处理),充分得考虑边界情况,异常处理要周全,防止内存泄露,防止竞态条件,多线程安全,等等。 - 性能,考虑数据量大或者访问频繁时的情况,对内存、数据库的使用要高效,算法要尽量最优。 - 任何涉及数量的地方,在业务场景合理的前提下考虑把数量放大到最大,为最坏的情况做打算。 - 数据库: - 操作应尽量批量进行,只查询必需的字段,减少 IO 消耗。 - 特别大的查询应在数据库中分页,由程序控制分批次处理,全量取出在内存中计算或者根本不考虑数据量大小是常见的低级错误。 - 合理使用索引。 - 基本优化思路: - 预先筛选数据,减少不必要的计算。 - 缓存计算结果,减少重复计算。 - 使用高效数据结构,空间换时间。 - 安全性,进行必要的权限检查,不能过度信任客户端输入。 - DRY(Don't Repeat Yourself)原则,禁止复制粘贴,提倡可重用。 - 单一职责原则,一个类、文件或者模块不能做的太多,不能做不该它做的事,好的设计是只把一件事做好。 - 封装原则,不要暴露不必要的实现细节。 - 开放、封闭原则,要方便扩展,要考虑到以后的需求。 - 代码改动方式要合适,不能一味得堆砌代码,需要适时停下来进行重构。 - 保持干净,不能存在任何无用的文件、代码,所有注释、文档需要同步更新,不能包含注释掉的代码,不能包含临时调试代码,例外情况应该添加注释说明。尤其注意借鉴代码片段时,复制过来要 refine,确保每一行都符合本项目规范,每一行都适用于本项目,并且每一行你都读得懂,不懂的搞清楚才能提交。 - 所有 Warning 都应该被立即修复,觉得不需要修的,讨论决定后通过修改配置文件禁用掉。 - 在工作中不断的反思自己对编程语言的思考与使用。 # Reference - [google style](http://google.github.io/styleguide/)