代码量小记

今天一朋友问我这边一个项目大概有多少行代码,我一脸茫然毫无概念,后来在百度上搜索了一下代码行数统计一行命令就查询出来大概4W行,紧接着一个新的问题出现了,4W行代码对于一个项目是多还是少,我该如何回答他,于是我又百度了一次。

我这边的项目的IOS项目,开发方式(SB + XIB + 代码)混搭,以开发效率为主。主要是SB为项目主体架构,XIB实现公用自定义视图,代码写简单UI及逻辑代码。这也是我个人开发几年总结下来最有效率的开发方式,虽然可能被很多纯代码开发者耻笑,认为SB或XIB难维护还影响运行效率,但我觉得适合自己的才是最好的。

好了不扯远了进入正题,首先查询代码量的命令是

find . -name "*.m" -or -name "*.h" -or -name "*.xib" -or -name "*.c" |xargs grep -v "^$"|wc -l

我查询到了4.8W行代码,然后我又在Pod目录下面运行了一次得到了2.2W行,也就是实际代码量差不多有2.6W行代码。我带着这几个数据和模糊的概念又百度了一次。

我搜到了知乎上的一个话题4个月写了4万行iOS代码,算多还是少呢?这是一个过去很久的话题,但我觉得点赞数最多的这个评论说的很有借鉴意义。

代码不是一个完美的评估项目的标准。以前有一个故事是说,项目经理用代码行数来衡量工作量。结果程序员就开始增加代码里面的空行,本来函数结果会有一个空行,现在放两个。再后来,有个程序员写了一个编译脚本,每次编译前在代码后面就自动加一个空行,这样有时候就算什么正事儿都不做,光是编译几次,自己的日工作量就可以达标。这些都还是简单的,真的要糊弄人的话,让代码变长的方法很多,比如,可以把一个资源文件,比如图片,转换成一个常量数组,那代码尺寸膨胀的可以想多快就有多快。

但是更多的时候,代码的无序膨胀就是代码编写习惯不好,也没有经过专业的训练。很多年前,我在某公司咨询的时候,见过这样的PHP代码。一个页面几千行,没有任何函数关系,一以贯之。我当时就跟客户的程序员询问他的写代码习惯,他就说按照逻辑一句一句写,遇到类似的逻辑就复制粘贴,这样代码当然就越来越多。我就问他有没有觉得这样写代码很累,他说一点都不累。然后我问他,当代码出了问题,改起来容易么。他就快哭了。然后,我就教他怎么,去把重复的代码凝结成函数,抽取结构和参数,提高复用级别。

这部分听起来很简单,但是实际上,这是一个极端的例子而已,大多数从业者可能知道怎么构成函数,但是在代码里面,仍旧是复用级别太低。也许你是用面向对象的方法去编程,但是基本的逻辑是一样的。

那就是重复的代码,一定要被合并成函数,或者是类的方法。这样首先是节约代码,但是更重要是,结构开始展现,从彻底的面条代码变成有条理,有结构的代码。人的认知能力是有限的,记忆能力是有限的,屏幕尺寸也是有限的。当你把几百行面条代码变成,几个函数以后,首先,你用来理解代码的单元变化了,从大逻辑上,你可以把每个函数当作黑盒子,总体结构就变成,调用几个函数了。然后当发现系统有问题,且你怀疑出在某个函数内的时候,你可以只分析这个函数的输入输出,就可以定位问题是否是在这个函数内。确定后,你修改和去理解的难度也大大降低。

以前有一个原则,叫做重复两次的代码块,必须函数化。一个函数尽量在几十行内。不见得非要100%的严格执行,但是建议认真体会,时刻反思。

写代码的过程应该是,先写厚,然后再写薄。写一段时间就反思一下,实现的结构是否合理,是不是太过冗余。当你的代码总是能保持一定的结构和复用程度以后,代码行数就会是项目规模的良好评估参数了。多一行,就说明逻辑确实复杂了一层。如果形成这样的习惯以后,随着代码量的增长,你的功力自然会加深。

其实写程序,就是一连串逻辑,你可以抽象他们,也可以具象他们,在看全局的时候抽象,可以帮你思考问题,看清big picture,可以理清头绪。当做具体实现的时候,你可以回到具体的细节上,但是,有了全局的抽象结构,你可以只关心一个局部的细节。

刚才我和我们公司主程在商量新产品的开发步骤,我跟他回忆我们之前开发这个2万多行交互排版系统。我说,如果我们一开始,一个模块一个模块的从头做起,一步一步做精,那么也许我们做几年才能做完。但是实际上我们是先把每个模块都定义好,实现了一个空架子,然后一点一点完善。这样有几个好处,第一,这东西是可以持续集成,边开发可以边测试整体效果,可以不段的改进,不需要瞎子摸象。然而,我们实际上,从始至终可以掌握进度,可以看清轻重缓急。这样,这个项目才可为,否则就完全不可控。

我很赞同这段话,也一直尽可能的这样去做,也尽可能的把OOP的思想展现到项目中去。但回到现实中来看公司中的项目细思极恐。

路漫漫其修远兮,吾将上下而求索。

于是我告诉他有4W行代码,毕竟朋友觉得我成天在键盘上敲敲打打和码字员没什么区别,行数越多越厉害嘛~😂😂😂😂

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,014评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,796评论 3 386
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,484评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,830评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,946评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,114评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,182评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,927评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,369评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,678评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,832评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,533评论 4 335
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,166评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,885评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,128评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,659评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,738评论 2 351

推荐阅读更多精彩内容