大家能在写程序之前把每个细节都能想清楚吗?

2017-06-30 00:16:25 +08:00
 guyeuro

我有时写一些有点算法或者复杂点的程序, 都是只能想个大概 感觉不动手写,就不能把细节完全想清楚 而是边写边改 写出来才发现有些地方考虑不周(调试前) 然后改一下

牛人估计是写之前就每个细节都想清楚了吧

3058 次点击
所在节点    问与答
31 条回复
JacksonBond
2017-06-30 16:13:01 +08:00
shit happens
ksaa0096329
2017-06-30 16:13:33 +08:00
想的太多,做的太少...结果就是浪费时间
msg7086
2017-06-30 16:22:23 +08:00
@guyeuro 比如让我写这个代码的话,我会先写结构。
注释也好伪代码也好,得先打框架起来,然后再去慢慢想细节。
比如这个 num2voice,那么首先把功能细分开。
1. 正负号
2. 整数部分
3. 小数点和小数部分(如果有的话)

那么这个函数实现就是:
def num2voice(num)
# const
suffix10k = ['', '万', '亿', ...]

# sign
puts '负' if num < 0
num = num.abs

# partition to 10k segments and convert to voice
segments = []
seg = 0
while num > 0 do
segments << suffix10k[seg]
segments << num10k2voice(num % 10_000)
seg += 1
end
puts segments.reverse.join

# TODO: fraction part
end

到这里主体功能就写完了,接下来只要把 1 万以内的 num10k2voice 实现就好。

我记得上一次写这个类似的程序还是初二的时候,那时候也不知道怎么做软件架构设计,就是从头到尾硬生生开着循环写代码,最后写得老长还难读。现在写得多了以后,养成了逐步细分的习惯,把功能细分到不同的方法里,然后再串起来调用,就很容易想也很容易写了。
而且你看,这些搞完以后,我都不需要写 num10k2voice 的实现,就可以提前做测试了,只要让函数返回一个固定值,就可以测试万位、亿位的正确性了。
msg7086
2017-06-30 16:23:48 +08:00
好像漏打了点逻辑,随便看看就好,手打的没进编辑器。
QQ2171775959
2017-06-30 16:27:05 +08:00
手码这么多代码,不错。。不过还是得细心点吧,老兄加油。
katsusan
2017-06-30 19:45:23 +08:00
我也和 lz 差不多,感觉自己蠢蠢的,都是拿纸算
uxstone
2017-06-30 21:18:29 +08:00
先想好要挖几个坑,
再在每个坑里深挖
Ouyangan
2017-06-30 21:57:13 +08:00
我会将整个流程和关键细节想清楚再动手 , 并且用为知笔记写下整个思考过程 . 总体时间差不多 ,但是真正写代码的效率和 bug
Messidaredream
2017-06-30 23:06:26 +08:00
自上而下,边做边改,列大纲。
msg7086
2017-07-01 00:13:50 +08:00
@QQ2171775959 这种逻辑一般都会当场写测试代码,调一下就行了。
zhx1991
2017-07-01 01:02:19 +08:00
当然不能

复杂系统逻辑多交互多

事先能想个主流程的大概, 有些边边角角的东西写到了才能发现有坑

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/372050

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX