大家平时怎么码代码的? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
artwalk
V2EX    程序员

大家平时怎么码代码的?

  •  
  •   artwalk 2014-03-02 21:18:31 +08:00 9353 次点击
    这是一个创建于 4245 天前的主题,其中的信息可能已经有所发展或是发生改变。
    大致说来,有两种方式

    1. 脑子里演算,甚至纸上草稿,整个流程搞定了,再码
    2. 想一点码一点,不断DEBUG,直到搞定

    我自己是第二种模式
    60 条回复    1970-01-01 08:00:00 +08:00
    davepkxxx
        1
    davepkxxx  
       2014-03-02 21:20:28 +08:00
    看文档质量
    alexrezit
        2
    alexrezit  
       2014-03-02 21:20:40 +08:00   1
    太复杂的就 MindNode 画个图. 不过一般我都是直接选 2, 先从独立性较强的模块出发, 然后再组织到一起, 先做一个最小可用原型.
    pirex
        3
    pirex  
       2014-03-02 21:37:33 +08:00
    看情况,一般的是2
    emric
        4
    emric  
       2014-03-02 21:50:47 +08:00
    觉得第一个很有必要.
    最近遇到了很多推到从来的情况.
    ffts
        5
    ffts  
       2014-03-02 22:07:09 +08:00
    我感觉我现在越来越多的时候开始用第一种了
    onemoo
        6
    onemoo  
       2014-03-02 22:12:58 +08:00
    一般都是第一种
    所以我很喜欢身边放着纸和笔
    binux
        7
    binux  
       2014-03-02 22:15:43 +08:00
    从没用过第二种,确定第二种码出来的代码能执行?
    wuyadong
        8
    wuyadong  
       2014-03-02 22:27:31 +08:00
    第一种,基本不debug,打log就行吧。
    arbipher
        9
    arbipher  
       2014-03-02 22:31:40 +08:00
    我一般是先写dummy function,返回定值,
    确保这个文件能跑起来
    然后在一个一个实现。
    ios
        10
    ios  
       2014-03-02 22:33:46 +08:00
    我是业余程式员
    第二种
    artwalk
        11
    artwalk  
    OP
       2014-03-02 22:35:09 +08:00
    补充下,自己码自己想实现的代码时用的方式(产品设计,定好接口什么的不算进去)
    artwalk
        12
    artwalk  
    OP
       2014-03-02 22:36:46 +08:00
    @binux 可以的,神奇吧。还有最初我发现面试用白板的时候,一度怀疑自己无法写出代码呢
    artwalk
        13
    artwalk  
    OP
       2014-03-02 22:37:42 +08:00
    @arbipher 嗯,我说的“一点”大致也是一个函数,一小段流程。并不是一个变量,一行就算“一点”了
    artwalk
        14
    artwalk  
    OP
       2014-03-02 22:38:49 +08:00
    @onemoo 最初我都无法想象这种编码方式呢
    artwalk
        15
    artwalk  
    OP
       2014-03-02 22:42:08 +08:00
    @ios 这个好像只是喜好不同,不是用业余专业区分的
    hustlzp
        16
    hustlzp  
       2014-03-02 23:01:30 +08:00
    随心,第一种第二种都会用。
    arbipher
        17
    arbipher  
       2014-03-02 23:34:29 +08:00
    @artwalk 那和我的也不一样啊。我每次run的时候,程序和功能看上去是“全”的
    # step one - dummy #
    def init():
    pass


    def handle():
    pass


    def clean_up():
    pass


    def main():
    init();
    handle();
    clean_up();


    # step two - implement init #
    def parseConfigFile(file):
    return STATIC_CONFIG


    def is_config_valid(config)
    return True


    def init():
    cOnfig= load_config(CONFIG_FILE_NAME)
    if (!is_config_valid(config)): raise IOError
    leofml
        18
    leofml  
       2014-03-02 23:34:59 +08:00
    先写注释, 再写代码.
    arbipher
        19
    arbipher  
       2014-03-02 23:36:15 +08:00
    https://gist.github.com/arbipher/9308302
    我要是再在回复框里写代码我就吃键盘。。。
    zorceta
        20
    zorceta  
       2014-03-02 23:38:14 +08:00
    我是先1然后放弃转2……每每如此
    RIcter
        21
    RIcter  
       2014-03-02 23:52:48 +08:00   1
    遇到比较乱的或者逻辑性比较强的都1
    digfire
        22
    digfire  
       2014-03-02 23:56:06 +08:00
    新手时期用1,后来工作压力大了开始变成2
    artwalk
        23
    artwalk  
    OP
       2014-03-03 00:26:52 +08:00
    @digfire 还可以这样?
    artwalk
        24
    artwalk  
    OP
       2014-03-03 00:27:27 +08:00
    @RIcter 想不清楚的时候有时确实需要稿纸
    digfire
        25
    digfire  
       2014-03-03 00:41:21 +08:00
    @artwalk
    因为要快速出原型,要快到连思考的时间都没有。
    想想真是不合理
    otakustay
        26
    otakustay  
       2014-03-03 00:42:33 +08:00
    码得久了,就是边想边码基本没debug就出来了……
    iEverX
        27
    iEverX  
       2014-03-03 00:52:46 +08:00
    没写过大项目,一般都是脑袋里想了一下怎么把架子搭起来,然后就开始动手写, 边写边整理思路。。写到一个函数的具体实现的时候,就是完全的DEBUG了
    R4rvZ6agNVWr56V0
        28
    R4rvZ6agNVWr56V0  
       2014-03-03 01:00:20 +08:00
    先构思,然后分出大概的模块,然后再码模块接口、写过程代码,最后拼装<->重构
    cyberscorpio
        29
    cyberscorpio  
       2014-03-03 02:28:03 +08:00
    一般都是混用的吧。
    tywtyw2002
        30
    tywtyw2002  
       2014-03-03 03:59:57 +08:00 via iPhone
    @arbipher 求视频验证。。。 吃hhkb吧
    powerfj
        31
    powerfj  
       2014-03-03 07:24:50 +08:00
    想一下,然后一次性把骨架都写好,然后不断debug,让程序跑起来,跑起来之后再填充东西,感觉流程是有点混乱..
    anjunecha
        32
    anjunecha  
       2014-03-03 08:10:40 +08:00
    先是第二种,如果发觉有一些问题再循环到第一种
    Matrix24
        33
    Matrix24  
       2014-03-03 08:27:14 +08:00
    第2种,我是业余选手
    artwalk
        34
    artwalk  
    OP
       2014-03-03 08:35:40 +08:00   1
    @cyberscorpio 就是说更偏向哪一种;比如上来IDE就打开,码崩溃了实在不行了再草稿,还是草稿好了,脑子里运行通过了再码
    artwalk
        35
    artwalk  
    OP
       2014-03-03 08:36:56 +08:00
    @tywtyw2002 Σ(  ̄д ̄;) 你!! 太残忍了。同求视频
    artwalk
        36
    artwalk  
    OP
       2014-03-03 08:41:33 +08:00
    @digfire 大环境所迫啊
    Mutoo
        37
    Mutoo  
       2014-03-03 08:59:50 +08:00   1
    没有先写 user case 的吗
    viator42
        38
    viator42  
       2014-03-03 09:08:20 +08:00
    写一段运行一次,有问题就debug,正常运行的话写下一段,直到完成整个流程.这样可以保证写过的代码是没有问题的
    lixm
        39
    lixm  
       2014-03-03 09:21:56 +08:00
    一般整体是1,局部是2
    ayang23
        40
    ayang23  
       2014-03-03 09:22:12 +08:00
    先把最核心的功能用bpython调试实现了,再把这几十行代码变成几百行代码的类或者函数,加上变量预处理,防错之类的东西,当然这个时候大框架已经出来了。
    jianghu52
        41
    jianghu52  
       2014-03-03 09:27:22 +08:00
    我以前也是二。现在有点变化。都是先写函数名,或者接口名,把整个程序的流程给固定下来。然后再单个函数单个函数的写。
    yahon
        42
    yahon  
       2014-03-03 09:30:55 +08:00
    我一般是这样的 比如我要写一个js的插件
    1》大致的框架功能定义(实现这个插件大概要什么功能 尽量解耦)
    2》具体实现(如果之前的定义有弊端,回头修改(1))
    vob636
        43
    vob636  
       2014-03-03 09:35:24 +08:00
    一般到一定地步的。基本上都是第二种了……
    chisj
        44
    chisj  
       2014-03-03 09:35:58 +08:00
    第二种比较有乐趣。
    str0ng
        45
    str0ng  
       2014-03-03 10:04:49 +08:00
    看功能的复杂性,一般代码都是第二种,搭框架都是第一种
    railgun
        46
    railgun  
       2014-03-03 11:02:40 +08:00
    2
    MikeAfc
        47
    MikeAfc  
       2014-03-03 11:45:10 +08:00
    身边留纸笔,必须走清流程,不然很容易返工
    lsbwahaha
        48
    lsbwahaha  
       2014-03-03 11:50:24 +08:00
    不管业务简单复杂,脑子里过一下,然后根据复杂程度画个流程图,一般用yed ,xmind
    Crossin
        49
    Crossin  
       2014-03-03 11:52:30 +08:00
    个人喜欢用螺旋式,先大概纸上画个框架后,写出最简单的功能,然后不断往上添加功能,再不断修改设计。开发过程中想到什么新东西就记下来,再下个修改中加上去。

    所以现在在公司写代码很不习惯,不喜欢一开始订好详细的计划,要做成什么样,花多少时间。
    j
        50
    j  
       2014-03-03 12:03:13 +08:00
    独立工作时,绝大部分时候是在基于现成的代码结构做调整,不存在从零开始。

    纸笔大部分是由于非独立工作需要和别人去沟通需求,返工往往是理解错误造成。
    Taivas
        51
    Taivas  
       2014-03-03 12:16:16 +08:00
    容易搞定的2,困难复杂的1
    ahtsiu
        52
    ahtsiu  
       2014-03-03 12:29:29 +08:00
    1+2 吧,动手写代码的前几天,可能是编译都编不过去的。

    纸笔很必要。
    hu437
        53
    hu437  
       2014-03-03 13:39:21 +08:00
    这个主要就是设计文档,参照设计文档;
    1、使用axure设计出界面原型;
    2、考虑好交互流程和相关的处理逻辑;
    3、设计好数据库结构
    4、开始码
    artwalk
        54
    artwalk  
    OP
       2014-03-03 13:48:11 +08:00
    @MikeAfc 返工,这么惨的?
    Ricepig
        55
    Ricepig  
       2014-03-03 14:16:32 +08:00
    我一般首先是用手码,偶尔才用脚。。。

    其实,也看是什么代码,如果不能引起思考的,那就直接写写试试。如果有点儿兴趣,有点儿挑战的就苦苦思索一下。
    mfaner
        56
    mfaner  
       2014-03-03 14:36:44 +08:00
    好像都差不多,大问题先分解成小问题,小问题不用怎么考虑挨着就往下写
    akinoniku
        57
    akinoniku  
       2014-03-03 21:55:21 +08:00
    先写测试再写代码吧
    missdeer
        58
    missdeer  
       2014-03-04 09:07:41 +08:00
    流程比较复杂的1,其他的2
    tonitech
        59
    tonitech  
       2014-03-04 09:18:41 +08:00
    看复杂程度,如果你要写个hello world还用1吗?
    icylogic
        60
    icylogic  
       2014-03-04 09:26:35 +08:00 via Android
    分解问题到自己觉得一天能搞定的单元,然后每个单元用2。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     4595 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 28ms UTC 10:02 PVG 18:02 LAX 03:02 JFK 06:02
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86