|零基础开发 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 模块】本文为阿里云原创内容 , 未经允许不得转载 。


推荐阅读