Skip to content

Commit cb7c334

Browse files
committed
断言保护代码
1 parent a8f47bb commit cb7c334

1 file changed

Lines changed: 7 additions & 4 deletions

File tree

codingstyle/codingstyle.rst

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -157,7 +157,7 @@ update: 经验表明,TDD未必是必要的,但是单元测试是很必要的
157157
* Clean Coder Rule: Always leave the code cleaner than you found it. 不用的代码及时清除,留着只会造成冗余和误解(如果你认为某段代码将来可能会用到,我明确告诉你基本上它是用不到的)。笔者经验是用动态语言写代码很难写出 clean code,必须上各种静态检测工具和规范来约束,防止代码腐化。
158158
* Design for failure. 微服务中一切都有可能失败。
159159
* 最少惊讶原则。让代码的副作用尽量最小或没有,函数式编程相比之下 bug 会更少。(有统计数据支撑的结论)
160-
* 快速失败,灵活使用断言。契约式编程(先验条件和后置条件),越早失败,越容易排查错误。
160+
* 快速失败,灵活使用断言护保代码。契约式编程(先验条件和后置条件),越早失败,越容易排查错误。
161161
* 增量式编程。及时清理技术债务,代码坏味道,防止『破窗』。及时重构不合理代码,及时进行测试,『慢即是快』,越早发现错误修复成本越低。很多统计数据的结果都显示,一名程序员在公司每天能产出的工业级别的代码不会超过百行。
162162
* 隐藏复杂性。如果复杂性避免不了,应该尽让内部复杂,接口要保持简单易用,而不要因为业务逻辑复杂就堆砌一堆shit。合理抽象,隐藏细节。
163163
* 一次只做一件事(Do one thing, and do it well)。尽量避免复杂度过高的逻辑,尽量做到代码简单,意图明确。
@@ -687,10 +687,13 @@ Docstring应该包括什么?接口易用性
687687

688688
* `《注重细节:代码排版,命名与注释》 <http://ningning.today/2017/01/22/python/python-coding-details/>`_
689689

690-
安全
690+
web安全
691691
--------------------------------------
692-
防范常见的xss,csrf,sql注入等攻击,不要信任来自外部的任何输入。对于外部接收的参数都要过滤,比如表单,对外的 api 等。对内的函数无需每一层都加上参数过滤(基于约定或者规范编程,没有遵守约定抛出的异常由调用者负责处理)。
693-
有一个例外就是数据库查询的参数,最好经过一次参数校验,防止不合理参数造成慢查询等问题。或者简单一些就直接使用断言
692+
- 防范常见的xss,csrf,sql注入等攻击,不要信任来自外部的任何输入。对于外部接收的参数都要过滤,比如表单,对外的 api 等。
693+
- 优先使用 orm 框架可以避免很多 sql 注入之类的问题,利用框架自带的安全机制杜绝一些网络安全问题
694+
- 对内的函数无需每一层都加上参数过滤(基于约定或者规范编程,没有遵守约定抛出的异常由调用者负责处理)。
695+
- 有一个例外就是数据库查询的参数,最好经过一次参数校验,防止不合理参数造成慢查询等问题(比如参数传递一个非常大的查询分页导致慢查询)
696+
- 使用断言保护代码,直接拒绝不合理参数
694697

695698
小白的踩坑记录
696699
=====================================================================

0 commit comments

Comments
 (0)