代码整洁之道

使用数组代替switch分支语句降低圈复杂度


 在服务器开发时,很多时间会采用数组代替switch分支语句,用来降低圈复杂度。

function registerCallbackFunc (code, func)
    if code== nil then
        return
    end
    if func == nil then
        return
    end
    callbackFuncMgr[code] = func
end

圈复杂度:

在软件测试的概念里,圈复杂度用来衡量一个模块判定结构的复杂程度,数量上表现为线性无关的路径条数,即合理的预防错误所需测试的最少路径条数。圈复杂度大说明程序代码可能质量低且难于测试和维护,根据经验,程序的可能错误和高的圈复杂度有着很大关系。如果一段源码中不包含控制流语句(条件或决策点),那么这段代码的圈复杂度为1,因为这段代码中只会有一条路径;如果一段代码中仅包含一个if语句,且if语句仅有一个条件,那么这段代码的圈复杂度为2;包含两个嵌套的if语句,或是一个if语句有两个条件的代码块的圈复杂度为3。
 

游戏与网站 


简单的 web 服务倾向于把和用户相关的状态信息(设计好数据结构)储存在数据库中,通过网络收到用户请求后,从数据库中读出关联该用户的状态信息,处理后再写回数据库。而网络游戏服务通常有更强的上下文状态,以及多个用户间更复杂的交互。如果采用相同的模式,数据库和业务处理模块间很容易出现瓶颈,这个瓶颈甚至不能通过增加一个内存 cache 层来完全解决。

 

 我在用 C 时惯用的面向对象风格


我所理解的面向对象,是让不同的数据元有共同的操作方式,适合成组的处理。根据操作方式的不同,我们会对数据元做不同的分组。一个数据可能出现在这个组里,也可以出现在那个组里。这取决于你从不同的方面提取的共性。这些可供统一操作的共性称之为接口(Interface),接口在 C 语言中,表现为一组函数指针的集合。放在 C++ 中,即为虚表。

 

处理多连接的服务器

 

 

在linux下尽量不要用apt-get install,库依赖问题很难找出答案

鼓励用本地编译的方式,可以参考这篇文章

 

 

回调函数

回调函数就是一个通过函数指针调用的函数。 如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用来调用其所指向的函数时,我们就说这是回调函数。 回调函数不是由该函数的实现方直接调用,而是在特定的事件或条件发生时由另外的一方调用的,用于对该事件或条件进行响应。

 

缩写习惯

尽量不用缩写,可读性排第一位,但可以用一些约定俗成的常见缩写。

posted @ 2018-06-22 09:28  _raindrop  阅读(192)  评论(0编辑  收藏  举报