最近在酝酿一个想法,还不是很成熟。大家都知道算法有时间复杂度和空间复杂度。对于工程实现代码来讲,也有逻辑复杂度。

逻辑复杂度是指要考虑的逻辑分支的数量。

举个简单的例子:如果写了一个用户用户登录模块A,这个时候要加一个功能是分析用户的登录时间,高频登录用户会发放优惠卷。

方案1:在每次用户登录时,记录该用户的登录时间,达到一个阈值后,触发发优惠卷。
方案2:用户登录时记录登录时间字段。有另外一个模块/线程,定期扫描该字段,触发发放优惠卷。

方案1的逻辑复杂度远高于方案2,方案1要考虑用户是否登录失败远算到登录中,重复登录如何去重,如果计算超时会不会导致用户正常登录超时等等。复杂性是o(n^2)。
方案2的逻辑复杂度是o(2n)。

这个简单的例子是提倡的松耦合。但是逻辑复杂度的场景补仅仅局限于耦合场景。以后细说。
展开
6