Programming 板


LINE

※ 引述《BM0108 (冲)》之铭言: : 在「同一份file」中(不同file间要import,那当然要把task包成function,毫无疑问) : 假如某个task过於庞大或是要被重复使用,那都可以包成一个function以利维护及使用 : 这是我的认知 : 最近听到一个说法是 : 为了日後maintain方便, : 即便只有3,4行code且只会用到一次的小task也应该被写成一个function : 乍听之下颇有道理 : 可是我自己的经验是 : 过份的把task包成function : 整分file的行数会激增还是小事, : 日後要maintain时,会需要一直回头查某个function的实做方式 : 就算注解或doc写得很好,查注解或doc毕竟不如直接看code来得直接 : 更何况,绝大多数的情况下,注解都写得很简陋、通常不会有doc这种东西 Orz : 想和版上前辈请益一下,究竟是我没掌握到精髓 : 还是过小、使用频率不高的task,确实不需要包成function? "即使只有3,4行code且只会用到一次的小task也应该被写成一个function" 这句话,我们可以检查这句话套用到多少种情况中. 有人说,所谓模组化程式设计,就是每隔100行程式划一条红线. 事实上是这样子吗? 就算这样划一划,也不会帮助你好好整理程式. 有人说低藕合,高内聚,ok,这一点很重要. 有人说物件导向... 分一分各种函数到各种模组及类别中之後, 我们经常可以回头仔细一想,然後说其实自己并没有使用物件导向思考. (物件导向并不是先写一个物件,然後後面加一个点带出它的方法或属性,就算数. 或许你写一堆OOP的程式,但工夫做得最好的是把函数整理得很好.) 那麽,最起码,好好地整理一些函数呢? 什麽叫作函数,是把共用的程式码收在一起 就称为函数吗? 个人觉得,从英文字面来思考,所谓函数 function, 另一个意思就是功能. 一个函数是充份发挥一个功能的单元,特别是你关心这个函数呼叫之後拿到的传回值. 可是我们又知道,程式缠在一起的时候,很多函数都会称为副程式,而且是 在基本的输入和输出值之外,还被一大堆前置状态缠住. 我个人觉得,起码你可以把函数和副程式二样东西区分清楚. 如果你要写一个函数,那就以输入值和输出值为重. 如果你要写副程式,也就是将几行共用的程式码收在一个地方,那麽状态的一致性 就是低藕合的重点. 你最好将每一个副程式的进入状态分析清楚,比较好掌握. 我觉得划分各种程式区块,无论是函数,副程式或任何长段程式的子段落, 你都要给这个程式区块定义一项明确的定义. 这定义就好像是命名一样,抓紧意义很重要. 然後要在自己脑中或程式注解中描述这些定义描述清楚; 或者在程式写法或 程式字面上把故事讲得很清楚,或者把故事的结构性描述得清楚. 这会变成像是把程式当作文件来写,应该可以说是 coding 的艺术. 讲到艺术,当你修改一副画的时候,不会因为一时着急就把修补的区块乱画; 同理,如果你有心把程式整理得很好,在改每个程式单元时,都应该会回想到 当初所赋与这段程式的意义,以及这段程式的输入,输出,以及周边状态的一致性, 然後非常小心动笔. --



※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 59.112.224.132 ※ 编辑: yauhh 来自: 59.112.224.132 (02/16 23:20)
1F:推 hero234pq:好文章 推~ Thanks 124.127.119.34 02/17 18:35
2F:推 meltice:我一行都不想动 牵一发而动全身啊 115.83.52.180 02/19 09:44
3F:→ meltice:就算前人的code我也只敢用#if 0 115.83.52.180 02/19 09:44
4F:→ meltice:然後整个code就是乱七八糟的 115.83.52.180 02/19 09:45
5F:→ adrianshum:#if 0 和动了有什麽分别... orz 223.19.40.221 02/20 11:52
6F:→ adrianshum:有用任何 SCM 就能找回旧 code 了, 223.19.40.221 02/20 11:53
7F:→ adrianshum:#if 0 根本於事无补.. 223.19.40.221 02/20 11:53







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:Soft_Job站内搜寻

TOP