V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
w88975
V2EX  ›  程序员

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

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

    开发项目中,用到某框架,该框架刚刚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  
       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   ·   我们的愿景   ·   实用小工具   ·   1176 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 34ms · UTC 17:41 · PVG 01:41 · LAX 10:41 · JFK 13:41
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.