作为刚入行的写代码的人,有个疑问,我感觉应该算架构类的问题。 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
zhaogaz
V2EX    Java

作为刚入行的写代码的人,有个疑问,我感觉应该算架构类的问题。

  •  
  •   zhaogaz May 21, 2017 3822 views
    This topic created in 3263 days ago, the information mentioned may be changed or developed.

    先说下背景:刚毕业,不到一年,之前写稿子,现在程序员。目前以程序员状态活了 3 个月,刚刚转正。外包公司打杂。(好在不加班,有时间自己学东西)

    目前业余时间在做一个小项目(第一次做,具体内容不敢说,感觉会被喷。),在不断接触各类各种工具类,学到了各种工具类的用法,感觉是有一些提高(主要在学工具类为什么设计成这样,如何使用)。写代码过程中会不断出现问题,自己也能找出解决。但是目前有一些内容困扰着我,希望有相关经验的人可以指点一下。在这里谢谢大家。

    具体问题: 1.做的这个东西是需要有一个交互界面的,不知道要用 java 的图形界面,还是起个服务器做成网页。(图形界面感觉更容易点,个人偏向于先用 配置文件 进行写代码最后把配置文件改成 gui,有需求的话再换成服务器做成网页。),所以怎么设计代码才能实现这样的切换呢?这算是 mvc 设计模式里面的东西么?

    2.项目中需要的数据不是很多,不到 10 张表,每个表几百条数据,具体多少字段也不好说,没自己分析。我在想要不要用 xml 文件之类保存数据?关于使用数据库上有这个疑问。

    3.如何估算这个东西要开发多久?

    4.就算我看了 mvc 的设计模式,在工作中也用到了,但是在这个小项目中,我没办法把我的项目按照 mvc 的设计模式进行抽象,觉得很困惑。

    5.目前代码写了一部分了,但是感觉按照这样的思路东西越来越长,虽然我已经尽力想办法缩减一部分代码了,如何才能知道我的代码是不是可以用设计模式再次简化?现在我才学习了几个月的时间,没有写过框架相关内容,看设计模式合适么?

    其实还有不少问题,没有想好怎么问,就这些吧。

    12 replies    2017-05-27 14:13:08 +08:00
    zhaogaz
        1
    zhaogaz  
    OP
       May 21, 2017
    如果有什么说错的地方,欢迎批评指正。谢谢大家。
    misaka19000
        2
    misaka19000  
       May 21, 2017
    GUI 的话还是用网页来写吧
    Muninn
        3
    Muninn  
       May 21, 2017   3
    架构师过来给你说一句,架构是因需求而生的,有时候需求有小不同,架构差别就很大。

    你整篇没提一点业务需求,而都在纠结架构的选择,好像天下的软件架构都一样似的。

    觉得你还没到研究设计模式的水平,无论如何先实现出来再改吧。

    写软件好像画油画,不满意的地方可以覆盖更改。

    你需要到极高的水平才能像画水墨画,一气呵成,最后画龙点睛。不要盲目去追求这种境界。
    zhaogaz
        4
    zhaogaz  
    OP
       May 21, 2017
    @Muninn 已经给您发送邮件,盼复!
    murmur
        5
    murmur  
       May 21, 2017   1
    1.做的这个东西是需要有一个交互界面的,不知道要用 java 的图形界面,还是起个服务器做成网页。(图形界面感觉更容易点,个人偏向于先用 配置文件 进行写代码最后把配置文件改成 gui,有需求的话再换成服务器做成网页。),所以怎么设计代码才能实现这样的切换呢?这算是 mvc 设计模式里面的东西么?

    >java 设计 windows 界面很麻烦,所以肯定要 web

    2.项目中需要的数据不是很多,不到 10 张表,每个表几百条数据,具体多少字段也不好说,没自己分析。我在想要不要用 xml 文件之类保存数据?关于使用数据库上有这个疑问。

    >数据库只有大了会出问题,小了用 xml 怎么维护,随便上个 mysql 就可以了

    3.如何估算这个东西要开发多久?

    >开发+设计+debug+后期维护,随便估一个,然后这个时间*pi 天就差不多了,难的要*10pi

    4.就算我看了 mvc 的设计模式,在工作中也用到了,但是在这个小项目中,我没办法把我的项目按照 mvc 的设计模式进行抽象,觉得很困惑。

    >先出东西再学设计模式,现在的 ide 已经智能到让你不知道什么叫设计模式了

    5.目前代码写了一部分了,但是感觉按照这样的思路东西越来越长,虽然我已经尽力想办法缩减一部分代码了,如何才能知道我的代码是不是可以用设计模式再次简化?现在我才学习了几个月的时间,没有写过框架相关内容,看设计模式合适么?

    >先出产品再优化代码,第一个项目肯定写的屎一样,但是写不出来不就没法交差了么
    lancerliu
        6
    lancerliu  
       May 21, 2017   1
    似乎你刚开始学,那你做这个东西的流程应该是这样的:
    1.写个很丑的东西(界面很丑,代码也很丑),但是可以实现功能
    2.开始添加新的功能。在这个途中,你会发现,我是不是有很多代码是重复的?是不是有些功能可以用更简洁的代码来表达?
    3.新的功能添加完毕了,并且可以用了。
    4.你开始尝试着手优化你的代码。
    5.然后你开始开发新版本,这个时候,你可以看看设计模式的书,尝试套一个合适的模式上去。

    其他建议:
    1.java 用 web,数据库用 mysql 或 sqlite,开发时间就是业余啊,每天 2 ~ 3 小时吧
    2.设计模式是给具体业务的,不是为了用设计模式而用设计模式
    3.代码简化现阶段的你是无所谓的,太早的优化代码就是原罪,完全没必要。什么时候代码简化?等你先把这个东西写出来吧。
    zhaogaz
        7
    zhaogaz  
    OP
       May 21, 2017
    @lancerliu
    @murmur
    @misaka19000


    感谢大家的指点,我已经做好了重构的心理准备。直接去写代码了。。。br />
    其实想先用 GUI 的目的是因为简单看了看 java 的 swing,感觉能快速把东西弄出来。。还能有个页面,因为现在对 web 方面不熟悉,,不能很快的弄出来。。

    不过看到大家这么说,感谢大家的建议。
    EmdeBoas
        8
    EmdeBoas  
       May 21, 2017
    不要提前优化...一边写一遍想着优化那样项目没法写下去的,用 web 有很多现成的轮子 美观又易用
    vcfvct
        9
    vcfvct  
       May 22, 2017 via Android
    从职业发展角度还是写 Web 的吧。swing 自己玩玩可以,job market 上毕竟 Web 是主流。My 2 cents.
    sonyxperia
        10
    sonyxperia  
       May 22, 2017
    真的没有人带你吗?
    zhaogaz
        11
    zhaogaz  
    OP
       May 22, 2017
    @sonyxperia 你值得是什么类型的带?
    zhangneww
        12
    zhangneww  
       May 27, 2017
    @zhaogaz 就是说,你一个新手程序猿,公司让你独立做项目?没人帮你?
    About     Help     Advertise     Blog     API     FAQ     Solana     973 Online   Highest 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 45ms UTC 20:20 PVG 04:20 LAX 13:20 JFK 16:20
    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