|零基础开发 nginx 模块( 八 )
/* set up the directive's configuration context */ conf = NULL; if (cmd->type & NGX_DIRECT_CONF) { conf = ((void **) cf->ctx)[cf->cycle->modules[i]->index]; } else if (cmd->type & NGX_MAIN_CONF) { conf = &(((void **) cf->ctx)[cf->cycle->modules[i]->index]); } else if (cf->ctx) { confp = *(void **) ((char *) cf->ctx + cmd->conf); if (confp) { conf = confp[cf->cycle->modules[i]->ctx_index]; } }if 子句和 else 子句执行不同的逻辑 , 用一个空行分开 , 结构更加清晰 , 这一点值得学习 。 顺便说句 , 这段代码较难读懂 , 也许可以再适当添加部分注释 。
最后 , 很多人可能听过类似 ''单个函数不要超过 100 行'' (更有严格的说 50 行, 20 行) 这样的最佳实践 。 但如果我们看许多优秀开源项目的代码 , 大佬们写起代码来根本停不下来 , 洋洋洒洒几百行的核心函数纯属正常 。 尽量保持函数功能单一和简短当然是最近实践 , 但是不用死守规则。 规则往往是由强者制定来约束弱者 , 黑客从来不应该受任何具体规则的束缚 , 唯一的规则就是正确、简短、健壮 , 然后越快越好 。 别给我说那些婆婆妈妈的编程规范 。
我的代码又快又稳定 , 然后你跑来说我排版不好看 (是的我说了) ?滚一边去!
后浪
初次接触一种开发技术 , 好像来到一座花园 , 想要到某个目的地取采摘一朵花 (开发需求) 。 陌生的花园犹如迷宫 , 一开始我们跌跌撞撞 , 可能被荆棘扎手 , 可能走错方向 , 但最终来到玫瑰花栏 , 摘下一朵花 。 于是我沿途做下记号 , 小心避开荆棘和弯路 , 就成了这篇文章 。
所有本文更适合作为简单的快速参考 (沿路记号) , 而读者可能会充满 “这里为什么要这样?” 的疑问 。 许多疑问都可以在 Nginx 官方 开发指南 和 源码 里找到答案 , 那才是真正的藏宝图 。 只有我们亲自摸索熟悉了这座花园 , 才会发现许许多多的宝藏 , 你也许会发现 , 旁边花栏有更美丽的郁金香和清香的茉莉花 。 先读代码 , 后浪 。
【|零基础开发 nginx 模块】本文为阿里云原创内容 , 未经允许不得转载 。
推荐阅读
- |万向肖风:区块链的商业突破不是从 C 端开始,而是从开发者开始
- 华为开发者联盟|华为课堂|华为帐号如何保护您的帐号安全?
- 品谷农产品|专业的软件开发流程,应该是怎样的呢?
- AI人工智能|“眼健康黑科技” AI智能眼科检测仪来了!展锐虎贲T710开发板等你来盘!
- 智慧医疗|“眼健康黑科技” AI智能眼科检测仪来了!展锐虎贲T710开发板等你来盘!
- 智能电视|苹果正在开发带有A12x和A14x芯片的Apple TV
- IBM|百年IBM再度迎来历史性变革 拆分基础设施服务部门全力押宝云计算
- 互联网分析师于斌|鸿蒙搜索和EMUI11!华为开发者大会回顾
- cnBeta|前苹果工程师/自动修正创造者开发首款App:名为Up Spell的文字游戏
- 化学奖|女科学家获2020年诺贝尔化学奖,她们开发了“基因剪刀”
