V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
NewYear
V2EX  ›  问与答

有多少程序员设计和编写代码的时间,远远少于修 BUG 的时间……

  •  1
     
  •   NewYear · 2015-01-08 11:23:26 +08:00 · 5483 次点击
    这是一个创建于 3605 天前的主题,其中的信息可能已经有所发展或是发生改变。
    面对一个新的程序(恩,我不是程序员,只做一些简单的程序来改善自己的“生活”)

    但是每次写的时候,逻辑里面总是有总总错误……

    比如累计数值到多少就跳出循环……忘记else去归零了(中间判断某些情况是要清零的,让程序不跳出这个循环,如果遇到错误才跳出这个循环)
    比如说自己想的流程是对的,但是写出来的代码……判断的时候错了……(因为要判断各种意外的情形,需要做不少if判断)

    然后能运转起来之后,就看看这里能优化下,赶紧去优化,那里能再完美下,赶紧去完美了,有的错误处理不太对(错误出现的几率不大,但是却存在会阻碍整个程序运行),需要反复尝试不同的方法才能得到解决办法。

    这些都还好,只要耐心点,总是会做到的。

    但是最尴尬的是,有时候反复思考,想不出怎么去解决这个问题,想啊想,就是想不到,但是可能过几天上厕所的时候,坐公交的时候,睡觉躺下还没睡着的时候……意外的就想到解决办法了……

    好吧最近看了csdn的什么注释活动,看到很多奇葩的注释,最常见的就是要么觉得自己当初的逻辑很傻,要么就是绝对不要尝试优化下面代码,因为看起来简单却牵扯太多,又或者调用的时候太奇葩了。

    似乎真正的程序员也会为这些问题头疼啊 = =!我是说我那些破问题
    22 条回复    2015-01-09 13:08:40 +08:00
    NewYear
        1
    NewYear  
    OP
       2015-01-08 11:24:32 +08:00
    每个回复的都有赞,绝对不会浪费你的铜币!谢谢!
    xmvagrant
        2
    xmvagrant  
       2015-01-08 12:43:09 +08:00   ❤️ 1
    你不觉得意外的就想到解决办法的时候让人欣喜若狂吗?
    herozzm
        3
    herozzm  
       2015-01-08 12:49:09 +08:00   ❤️ 1
    看一个程序员的素质,高素质的大部分时间是在业务bug,而不是在程序bug
    pH
        4
    pH  
       2015-01-08 15:49:16 +08:00 via iPad   ❤️ 1
    @xmvagrant 确实那种感觉很开心
    roys
        5
    roys  
       2015-01-08 15:52:33 +08:00   ❤️ 1
    一直想改掉这个毛病。每次有了一丁点想法就开始写。最后也只能调bug了。
    msg7086
        6
    msg7086  
       2015-01-08 16:09:03 +08:00 via iPhone   ❤️ 1
    铜币倒是小事。一个能引起思考和给人带来帮助的主题就是好主题。

    测试驱动开发!!
    spacewander
        7
    spacewander  
       2015-01-08 16:17:59 +08:00   ❤️ 1
    我觉得这就是人生……已经习惯了-_-
    em70
        8
    em70  
       2015-01-08 16:21:52 +08:00   ❤️ 1
    这是基本功是否扎实的问题,没积累够1万个小时编程经验
    NewYear
        9
    NewYear  
    OP
       2015-01-08 16:56:31 +08:00
    @xmvagrant 想到一个无可奈何的问题居然有解决办法 当然是高兴的 但是更多的时候还是想着当时就解决了该多好啊!

    @herozzm 嘿嘿,程序bug是因为经验不多或者自己不小心整出来的吧……

    @pH 想不出解决办法的时候好忧伤的,只能慢慢想,慢慢想,完了自己还觉得,这玩意根本不可能实现嘛!完了过几天想到办法了,立马就推翻自己的说法了……

    @roys 不管怎样,总是能去写代码,就很不错了,我就很懒,比如我坚持了快3个月做一件事情,每天都要盯着手动处理……时不时要去看看,最后终于觉得,还是花点时间写个自动化的出来吧……于是几个小时后,就拿着勉强可以用的用起来了,然后一发现有错的,可以改进的,就加进去……有错的就调整好,蛋疼,有的又获取不到样本,只有出问题的时候才能截取下来……不过这个过程还是挺有动力的,修修改改也半个月了。

    浪费的时间真多啊,哈哈哈!不过以后可以自动化的丢那里无错运行,就很开心了。


    @msg7086 我是先取一大堆样本来,然后分析处理的。应该也差不多吧。有的样本获取不到,只有出问题再处理。


    @spacewander 只要没放弃修改就不错啦,要是自己都看不下去了,这样的人生要杯具了,哈哈哈!


    @em70 想了想,很有道理,想想自己以前用某种语言的时候,一开始也是常常写错,后来就少了。其实是自己不熟悉写法,老是容易忘记掉了。当然了,写错了debug信息又不提示的时候那叫一个蛋疼(有的提示信息把自己搞混了)。
    046569
        10
    046569  
       2015-01-08 17:33:04 +08:00   ❤️ 1
    看了LZ的帖子,心有戚戚焉,曾几何时自己也是同样自己挖坑自己跳.
    说说我的经验:
    第一,找个更适合自己的语言.语法舒服,库比较完善,用起来省心.
    第二,改变思想,比如忘记循环,改用迭代.不要假想太多例外,如果是会影响到运行结果,那么就 Fail-fast ;否则做个简单容错保证结果正确即可.@msg7086 提到的 TDD 是个好主意.
    第三,调试的时候利用各种工具,能下断点就不打印日志.该懒的时候就应该懒.
    第四,同一件事如果你重复做第二遍,你就应该考虑自动化了.理由同上.
    BGLL
        11
    BGLL  
       2015-01-08 17:52:29 +08:00   ❤️ 1
    写得多了,很多东西就能闭着眼睛也不会错了
    BrownGoodMan
        12
    BrownGoodMan  
       2015-01-08 18:21:54 +08:00   ❤️ 1
    合格程序员如果写十几个ifelse在一起会先自行撞墙5分钟惩罚自己.
    你写的太少,而且不规范.总之就是没经验...
    建议先读几本7天学会c语言之类的书籍.不要乱写,找些大师的例子一边读一边理解一边模仿.
    另外你能写程序肯定就是程序员了,它是能力定位又不是职业.
    pepsin
        13
    pepsin  
       2015-01-08 18:42:48 +08:00   ❤️ 1
    我的 bug 一般是自动补全带来的 Typo 哈哈哈
    NewYear
        14
    NewYear  
    OP
       2015-01-08 20:01:24 +08:00
    @046569 喜欢的语言真心找不到!我只希望有个多线程,能拖拉界面(虽然很喜欢web方面的语言,但是这方面的语言先天性对做应用程序支持不好)……其他语言要么太复杂了(比如说C吧,听说1-2年还不够入门的),要么用户要安装一个硕大的运行库……python似乎就很不错,还跨平台,不过画不出界面,太不合适我们这些非专业的了……以前最开始的就是vb相关的,就暂时用vb6了……vb6要是加个多线程就好了……咦,想来想去,好像就delphi靠近我所想的了,但是看着那语法……醉了。
    我真心不是挑剔,好像delphi用的人比较少,就怕到时候找不到别人的轮子用……或许有误解的吧……

    我真心不是挑剔,只是想有个能拖拉界面的(简单嘛!),然后有个多线程的!(VB6木有),还有就是你说的,有各种库啊!有没有什么合适的推荐推荐呢!(这问题痛苦很久了,毕竟要重新学过,慎重啊)

    你说的迭代我不懂唉,回头再研究研究= =!自己以前好像也查过……小循环我是满足条件就继续下去执行,大循环排版好容易出错,改用goto跳走的。(视情况而定,有的程序不会写任何一个goto)

    我非调试一般不输出什么东西,出错就到差不多的位置去输出各种数据出来看看……然后研究对策,嘿嘿!其实一般执行到某处有问题的,进去看看代码差不多就能猜到哪里问题了。

    虽然重复的事情应该做自动化,但是感觉写工具也是需要花费时间的啊……一想到各种调试,各种bug,各种死循环,哈哈哈哈!你懂的,就更懒了,如果有别人写好的如果合适的话一定用别人的!(一般没安全问题的工具),用得不喜欢就想想别人怎么实现的,偷懒,然后按照自己思路改进改进……会写一些程序就是好啊,用得不爽自己来!


    @BGLL 是的,不过有些语言真的这方面很有优势哎,比如说js,括号尖括号一点击,就显示另一个在哪里了。高下立判,再多的括号堆在一起,一个个点过去就很容易找到出问题的那个


    @BrownGoodMan 你好,C语言听着就吓到了,听说挺难入门的,然后想到的就是代码量比较大(听到1-2年才入门,就不敢看不敢学了,可能也存在误解吧!),也看过别人写相同语言的代码吧,感觉有思路的话实现起来都是那样吧 = =。可能没看过所谓的高深的代码。对了,同语言看不懂的,一般是看不懂算法= =!
    个人觉得如果不是常常要写那些强大的应用,应该没必要选择那么难的语言吧……或者有什么好语言推荐推荐么……就希望有各种库或者别人做好的可以挪来用呵呵,能拖拉窗口控件就最赞了,最后还天真的想要用户拿到的时候,不要去装个几十兆的运行库,对对对,多线程,有多线程就最赞了,没有的话将就用vb也还行……虽然……有点古老……


    @pepsin 常用的话应该不会太多吧,不然太悲催了
    BGLL
        15
    BGLL  
       2015-01-08 20:20:15 +08:00   ❤️ 1
    @NewYear
    你说的是IDE的问题吧。
    046569
        16
    046569  
       2015-01-08 21:37:49 +08:00   ❤️ 1
    按照你的情况, Visual Basic 很符合你的需求.如果纠结于多线程,就用新版;可有可无,就用旧版,貌似旧版也是可以支持多线程的,只是略复杂.
    Delphi 近些年确实用的人少了,但作为候选还是可以考虑的.
    至于其它,了解了解设计模式,再想想你说的"也看过别人写相同语言的代码吧,感觉有思路的话实现起来都是那样吧"是否过于武断?
    编程无它,唯手熟尔.
    NewYear
        17
    NewYear  
    OP
       2015-01-09 00:28:24 +08:00
    @BGLL 可以这么说,我用notepad++,感觉这个高亮括号就很不错,其他的高亮关键字其他语言基本也是都有的,在其他的编辑器也看到这个高亮括号尖括号的,很赞,在一堆逻辑里面,好方便啊


    @046569 是的,之所以一直用着,也是因为网页有asp(虽然不升级了,但是兼容性问题不存在),简单程序可以用vbs,应用程序可以用vb6,游戏/工作自动化有按键精灵,office一套又有宏。可以说还是挺不错的……当然不能和专业程序员比了,毕竟追求的层次不同……vb6不支持多线程,看多很多别人的案例,虽然实现了,但是局限挺大的(不能说很难用,而是要用上挺难的,最简单的就是vb6自己的控件不支持多线程,反正都是这么说,我也不太了解,也听说vb5有多线程,不稳定),用按键精灵的时候觉得多线程挺爽的。以后确实应该试试.net里的vb,虽然那的vb已经……

    好吧,设计模式什么的确实不懂,想起一个问题,上次用百度的umeditor asp版,发现上传文件(图片)功能上传不了,一查源码,它在创建文件的时候会判断文件夹是否存在,但是竟然是从根目录开始一层层探测,如果不存在就创建,windows的iis虚拟主机,一般会禁止其他目录的权限,自然就读取不到虚拟主机上层的文件夹了,探测不到就创建,必然也是不会成功的。于是就直接报500错误不干活了。(一个容错机制导致的错误)
    不不不我没别的意大牛的产品应该很多人用的,这样的情形在虚拟主机上根本就传不了文件,其他人怎么用的呢(自己的开发机器上权限一般不会设置那么严格就没关系),不理解。加了个判断解决bug(属于虚拟主机下的目录路径不存在才尝试创建)。在查看源码的时候,也顺便上下翻了翻,同样是上传类,跟其他的无组件上传类其实差不多,所以当时就冒出一种“原来大牛也是这样写asp的啊,原来大牛也会考虑不周全啊”

    "也看过别人写相同语言的代码吧,感觉有思路的话实现起来都是那样吧",确实是有点武断,毕竟我用的这个语言吧,没有那些语言高级,想想.net里面的vb就有超级灵活的写法(记不起来那个案例了,反正就是一行里面用短而简洁的方式实现了vb6要好几行的的的的代码吧),不同的人写出来应该还是有所不同的,也有高效和低效的区别,当时有那种想法也是因为自己看着觉得是我的话也差不多这样写……但是太复杂的我肯定就费脑筋了,哈哈,我承认我菜。一些想法太想当然了。
    sumhat
        18
    sumhat  
       2015-01-09 00:50:09 +08:00
    难道没有单元测试么,楼主描述的问题单元测试基本都可以搞定。
    0okmnbvcxzx
        19
    0okmnbvcxzx  
       2015-01-09 07:01:48 +08:00 via Android
    sampeng
        20
    sampeng  
       2015-01-09 11:33:17 +08:00
    80%时间思考,20%时间code。。
    和语言无关,这条是真理。无论如何往这个方向努力。
    程序bug就少了。
    很多程序bug其实是设计问题。设计好了,程序bug就没啥了,业务bug,就是慢慢磨了,打发时间的东西
    BrownGoodMan
        21
    BrownGoodMan  
       2015-01-09 11:54:07 +08:00
    @NewYear 不要看高深代码,就是一些大师写的应用广泛的开源代码.追求跨界最广容易学习好玩轻便漂亮所有优美形容词,首选JS.前端 混合前端 后端 游戏都有.软件前后端IDE首选 intellij idea.开发游戏首选unity.入门标配没得选,就这一家看着顺眼,只是mono拖了后腿. 如果追求拖控件就是visual studio.如果是osx 可以xcode拖.但这俩都要掌握一些丑陋的程序语言来开发功能... 如果不是工作需要,这些庞大的像猪一样的丑陋的语言和IDE很多人早都不想看到了.
    saber000
        22
    saber000  
       2015-01-09 13:08:40 +08:00
    我现在最悲剧的需求把架构给搞乱了,老是出现一些计划外的需求,其实也是和我的经验欠缺有关.
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1841 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 20ms · UTC 16:25 · PVG 00:25 · LAX 08:25 · JFK 11:25
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.