美文网首页
后端开发和部署的若干约定

后端开发和部署的若干约定

作者: michael_jia | 来源:发表于2016-11-09 09:49 被阅读30次

    上周新人 Los 加入;对 Yii 熟悉的对 Laravel 不熟悉,反之亦然;这里记录一下代码设计的约定;关于 Redis 的约定初步成型(after 3 weeks since 1st Nov.);

    原则
    • 结构良好;
    • 代码整洁;
    • 风格一致;
    数据库
    • 数据库名:db_*
    • 时间字段
      _intm 插入时间,_uptm 更新时间,_detm 删除时间,_pptm:参与时间;
      使用 UNIX 时间戳格式;
      时间字段大多内部使用,提升可测性和运营排查问题;
    Redis 的原则
    • 一个应用一般使用一个 redis 实例;
      不同的应用可以使用同一个实例;
    • 一个应用一般使用一个库;
      不同的应用一般使用不同的库;
      多库不会增加性能,只会增加部署复杂性;
    • 使用命名空间对库进行分隔;
      提高 key 的可读性;改善 key 冲突的可能性;
    Redis 库
    • 0:通常不使用,保留供 laravel 升级使用;
    • 1:数据缓存;
    • 其他:一般不使用,特殊业务考虑使用;
    • 32:st:$short_tag => long_url;
    不同环境下的 Redis 库配置
    环境 库ID 范围
    me(local) 1 [1-10]
    dev 11 [11-20]
    test 21 [21-30]
    prod 31 [31-40]
    Redis key 约定
    • :做间隔符,形如:a:ba:b:c;字母全部小写;
      a:业务;b:数据(by 指明筛选条件);c:条件;
      对于 b 要使用一个 word 来表示数据或者 action,比如:chatter,onliner,focus;
      key 不要太长;简洁能标明主旨即可;可以通过 redis_key 字典查询具体含义;
      不标注数据类型,不标注 _list(抛弃执念);
    • www:user:$id
      哈希结构,www 表示默认业务;user 表示用户表;$id 表示主键字段值;
    • www:uid_by_phone:$phone
    • 已发言用户:im:chatter_by_demand_id:
      zsets 结构,首次发言时间为 score,uid 为 member;
    • 在线用户:im:onliner
      哈希结构,uid 为 field,上线时间为 value;或者 zsets 结构;
      相对 zsets,哈希耗费小,数据多时可自动压缩;
    • 接口形式:i:接口索引:
      比如:i:a08 就是 a08 接口默认类型(string)数据;
    接口
    • API Design First
      接口的设计很重要;如何对接口分组,要考虑 controller 和 model 两方面;
    • controller/action 设计:demand/b42,其中 b42 就是接口文档的命名索引;
      好处是便于交流,要了解其具体含义要依靠查询接口文档来解决;往常 action 的命名是一个难题,命名不好的话反而造成误导;索引法至少不会太坏;
    • 接口的测试代码和实现代码 同等重要
      探索性测试用例的设计、测试代码的编写,要和实现代码一起 review;
    关于测试
    • 模块的可测试性;
      类似 前端,后端要建立模块测试机制,实现可单独调试、可单独测试、可单独发布,以支持持续集成、持续测试、持续发布;
    • Debug 技术不仅要掌握,而且要精通;
      比如 ZendDebug;
      不会 Debug,编码效率不会太高;学会 debug,上了一个台阶;
      没有条件 Debug,解决问题的效率不会太高;
    • PHPUnit
      Yii 和 Laravel 框架的默认 Unit Tests 测试工具都是 PHPUnit;Yii 也使用 codeception 做更多测试;
    • 测试有益心理健康;
      一个工程师害怕改代码,那简直是笑话;
      改了一个问题引起两个问题,那更是灾难;
      有测试做保障,特别是自动化测试,可以解除恐惧,卸掉心理负担,从此放心大胆地重构,质量还能得到保证;

    相关文章

      网友评论

          本文标题:后端开发和部署的若干约定

          本文链接:https://www.haomeiwen.com/subject/jmvzuttx.html