写出clean的函数

私以为,作为一名程序员,一定要以写出优美的代码为目标,优美的代码即逻辑实现简洁,代码可读性强,结构设计合理。这也是我对自己的要求,所以每次写之前都会花大量的时间在脑海中反复构思,在编写过程中也不断的重构新代码,当然咯,能力与追求通常都是有差距的,自己写的代码并不像自己想要的那样优美。

为了加强理论基础,最近又开始认真研读uncle bob的《clean code》一书,这次是带着平时的经验看的,所以看的比较细,也比较慢,命名一章讲的内容对于参加工作的同学来讲应该是写代码的常识了,也不赘述了。

结合我平时的工作经验,函数一章的内容中我觉得有三点是非常需要重视的:

1、函数只做一件事

有些新同事会有一个习惯,就是把一个方法写的非常长,很多if else的逻辑都平铺在了一个方法下面,这么做一是读代码的人会很痛苦,可能读了几十行前面的逻辑又不记得了,就得反复上下翻动,很不流畅。二是代码毫无复用性可言,那如果有人想复用上述方法体的逻辑怎么办?有心的同事可能会去好好理解上面的逻辑,然后抽一个公用方法出来,大部分同事可能就直接copy了,否则既要忍受阅读长代码的痛苦,又要担负改坏代码的风险,结果就是造成代码的冗余。这无疑在加速代码的崩坏。

2、无副作用

如果说函数太长只是加速代码崩坏的话,那副作用就是直接给代码增加了一个坏点。副作用最直接的问题是会造成后来者对代码的误解,如果不看有副作用的方法的实现,那很可能后续的代码逻辑的理解都会走偏。另外就是破坏了原有的代码结构,如果有人继续在次基础上开发,那结构会非常混乱,后期无法维护,更严重的是如果有人复用该方法而不知其副作用,甚至会造成严重的bug。这是一定要避免的。很不幸,我以前在编码过程中特别喜欢用副作用,因为特别方便,因为我特别喜欢做一件事的时候顺便做一些相关的事,这样省工夫,效率高,但把这个习惯带进写代码那可能就会变成灾难了,以后会极力避免。

3、输入参数不要作为输出

说实话,这点是我一直没有意识到的一个问题,而且我也颇喜欢这么用,主要原因可能是将上学时使用c语言的习惯带到了java上。众程序员周知,c的指针非常强大,写代码经常会把指针作为参数传来传去,那java虽然没有指针,但是有object啊,传object和传指针我觉得效果是一样的,所以我很喜欢方法里面传对象进去,然后再修改对象的内容,后续继续使用更新后的对象,这就是输入参数作为输出的反面典型,这种情况下好的做法可能是将这个方法集成到这个对象内部,作者说,如果非要输入作为输出,那就输出this。

当然啦,重看这本书还让我意识到应用一些简单设计模式的重要性,缺乏这部分知识,即使写出了一些clean的代码,可能只能达到uncle bob 对于clean code要求的初级阶段,clean code之于我要走的路还很长。

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

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 172,764评论 25 708
  • 前言 几年前我偶然发现了Robert Martin的一个关于分离关注点的演讲,在这个演讲的启发下,我尝试把在ASP...
    woodylic阅读 2,779评论 1 6
  • 函数是代码组合的基本单位,高级编程语言的发展从结构化到面向对象,再到最近大有要复兴之势的函数式编程,函数都是组成这...
    TheAlchemist阅读 2,184评论 6 21
  • 如果你捡到一个鬼脸娃娃,丢了三次它第二天仍然会出现在桌子上,你会不会觉得毛骨悚然? 真实的事件是这样的。 张奎是一...
    杨三刀阅读 823评论 8 2
  • 水 源 准备水,这看起来是非常显而易见的事情。然而,野外房车露营不仅仅要装满你的净水箱。你需要用可重复使用的3L装...
    苦丶逍遥阅读 195评论 0 0