同样的功能,你是倾向于框架 API,还是自己重写代码? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
w88975
V2EX    程序员

同样的功能,你是倾向于框架 API,还是自己重写代码?

  •  
  •   w88975 2015-06-26 22:05:36 +08:00 4245 次点击
    这是一个创建于 3813 天前的主题,其中的信息可能已经有所发展或是发生改变。

    开发项目中,用到某框架,该框架刚刚beta不久,主要教程来自官方文档,民间极少有教程.
    需要实现一个功能,框架有提供一个很接近的API.
    经尝试很多次后,发现失败(原因在于并不知道这个API能达到需要的效果,官方文档给的用例比较少,也没有其他地方可以查阅)

    抛弃框架的API进行开发,用自己的代码实现,其实利用框架和自己写代码,逻辑是一样的,代码甚至90%都相同.

    但是codeview过不了,上司要求,能用框架提供的API就必须得用,我很是无奈,甚至觉得,假如后来知道了该框架不能完成所要的需求的话,就在这上面浪费了不少时间.有点吃力不讨好的感觉.

    不知道各位猿们怎么看?

    项目是开源项目.

    19 条回复    2015-06-27 12:44:51 +08:00
    Septembers
        1
    Septembers  
       2015-06-26 22:22:22 +08:00 via Android
    如果框架本身官方接受Pull Request的话
    可以考虑重构目标API提交Pull Request
    (但是如果这样做的话 需要考虑通用性问题
    w88975
        2
    w88975  
    OP
       2015-06-26 22:50:04 +08:00
    @Septembers 框架接受Pull Request,但是我的问题不在于是否修改框架,而是这两点之间的抉择问题.
    w88975
        3
    w88975  
    OP
       2015-06-26 22:52:04 +08:00
    @Septembers 如果框架本身能够很轻松的解决问题,那么一定选择框架提供的API,但是在框架不确定的情况下,是否可以先出一个版本,后期再进行迭代?
    而且还是这种使用框架API与自己重构的成本基本上相同的情况下,如果选择框架,能很好的踩完需要踩的坑,但是浪费了时间.
    Septembers
        4
    Septembers  
       2015-06-26 23:07:57 +08:00 via Android
    @w88975 麻烦透露下编程语言
    kongkongyzt
        5
    kongkongyzt  
       2015-06-26 23:08:59 +08:00
    我只是好奇为啥要用一个beta不久的框架。。。
    w88975
        6
    w88975  
    OP
       2015-06-26 23:20:00 +08:00
    @Septembers polymer
    w88975
        7
    w88975  
    OP
       2015-06-26 23:21:47 +08:00
    @kongkongyzt 搞错了 是release
    neoblackcap
        8
    neoblackcap  
       2015-06-26 23:24:09 +08:00
    @w88975 既然接受pull request的话,你写得又比框架的好,那么你去发个pull request将你的版本合并进去,然后不久光明正大地使用了吗?
    iskyzh
        9
    iskyzh  
       2015-06-26 23:32:24 +08:00
    @w88975 = = 这个框架好像很熟悉的样子……
    我看 Polymer 做出来的网页效果很好,虽然没有学过,但我倾向于根据自己的需求读官方文档,如果官方文档里没有,或者自己的需求超出了框架能做的,我会考虑再使用一些更加底层的方式写代码。
    本人对前端的美观比较在意,所以肯定不会选择自己写,那么就先用 Polymer 做,实在没法用 jQuery 获取 Polymer 创建的 DOM 对象,然后进行操作……
    = = Google Material Design 有一个 Bootstrap 主题…… https://github.com/FezVrasta/bootstrap-material-design , 如果是为了做出 Material Design 的界面效果而使用 Polymer,不如寻找其他可以显示 Material Design 的代码。
    iwege
        10
    iwege  
       2015-06-26 23:47:05 +08:00
    先修改自用,觉得可以就和官方讨论,不然就自己维护一套。
    或者用这个为一个base class 然后extend你自己的API。
    以前JQM不支持的tablet的时候就这么搞过。
    w88975
        11
    w88975  
    OP
       2015-06-27 00:02:05 +08:00
    @iskyzh 并不是UI方面,而是在JS框架方面,基本上没有用到polymer提供的控件,控件都是自己重新基于polymer做的.


    @neoblackcap 首先是不至于为了一个很少见的需求去提pr,我最大的问题在于,如果框架提供的API仅仅能满足一点点需求,并且开发周期大于自己重新造轮子,这种情况下,是继续踩坑还是自己造轮子解决.
    dallaslu
        12
    dallaslu  
       2015-06-27 00:07:24 +08:00
    工期紧、框架完成度高并稳定,则用框架。
    88250
        13
    88250  
       2015-06-27 00:10:06 +08:00
    开源项目注重的是持续
    w88975
        14
    w88975  
    OP
       2015-06-27 00:10:09 +08:00
    @dallaslu 工期确实紧,但用框架需要踩很多坑,需要花时间去了解,反而比较浪费时间.
    w88975
        15
    w88975  
    OP
       2015-06-27 00:10:54 +08:00
    @88250 持续是肯定的,我想的是初期版本可以暂时自己实现,后期迭代的时候,如果能用框架则用框架.
    Septembers
        16
    Septembers  
       2015-06-27 00:17:31 +08:00 via Android
    @w88975
    1.
    你可以考虑自己做个 组件库,打包成一个project,单独维护
    然后在项目中引入该 组件库
    2.
    目标API不满足又不希望提交poll request/issue
    可以通过monkey patching的方法解决
    (代价是API与文档描述行为不符合既定预期,
    (从而造成维护困难
    3.
    开始你说公司不允许不使用API也就意味着,你没有对基础框架的调整权限。
    realpg
        17
    realpg  
    PRO
       2015-06-27 01:17:46 +08:00
    选择一个可以充分扩展的框架……开源社区维护的可以贡献代码的就更好了
    jjx
        18
    jjx  
       2015-06-27 09:22:51 +08:00
    在可能的情况下尽量使用现有的框架,当然框架要符合成熟,开源, 社区好的条件,这样能享受很多人的智慧, 如果什么都是自己实现, 最后结局通常是重写, 特别是换人的时候
    secondwtq
        19
    secondwtq  
       2015-06-27 12:44:51 +08:00
    Polymer 感觉确实有坑... 特别是推开官方组件库从头重做的...
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5673 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 23ms UTC 03:01 PVG 11:01 LAX 19:01 JFK 22:01
    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