<i id='bzqwixgc'><tr id='8ayj6j29'><dt id='z1hncxmi'><q id='q63aaz87'><span id='r1vcytmt'><b id='d0rzqxip'><form id='zo6hzp6j'><ins id='4kqi7fyo'></ins><ul id='zotlgrcm'></ul><sub id='48911yc6'></sub></form><legend id='vmw2vxa6'></legend><bdo id='5hjl0htv'><pre id='szc3ciw4'><center id='10fhuedr'></center></pre></bdo></b><th id='4pjceb0k'></th></span></q></dt></tr></i><div id='oaw9zmha'><tfoot id='hsvqrs83'></tfoot><dl id='1p3fp0zr'><fieldset id='tb8cr0ca'></fieldset></dl></div>
    <legend id='skvf0tng'><style id='2xd38byq'><dir id='8i8l98he'><q id='8qxte63c'></q></dir></style></legend>

      <small id='8flgclet'></small><noframes id='ljslihdf'>

      <tfoot id='u4ajdn25'></tfoot>
        <tbody id='01jsykwi'></tbody>
    • 网站建设公司当前位置 : 网站建设公司 > 知识普及

      开源项目开发基本知识

      发布时间:2021-09-01 17:15   浏览次数:次   
      1. IP (intelligent Property)意识, 项目中经常会引用他人模块的代码,另外自己的项目也可能会被其他人用到,这里就有一个知识产权问题,具体而言就是source code的license或者软件的patent问题。 一般项目开始之前就得设计好 IP plan,这需要考虑到项目中其他人/公司的代码是什么License(例如GPL,LGPL,BSD),以及从商业目的出发,自己准备如何license自己的code,这种plan一般都要经过上级部门批准,尽量绕开一些知识产权问题。我们经常看到project下面有Author文件,其中会有版权声明,另外source code文件的开始都会有license header,其中包括了具体的license信息。
       
       
      2.  开源社区的合作开发模式,很多开源的项目都会放在知名的开源社区,例如freedesktop,Gnome,以方便全球程序员联合开发,他们有一套自己的资源去协作所有人的工作:
       
         1)Maillist, 用于讨论具体项目的开发,相当于是一个邮件群,开发者经常会在里面发自己的patch,所有的群成员都可以看到这个patch,并可以对其提出意见和建议,patch的作者可能会依据讨论的结果重新写patch,重发,重新讨论,直到project maintainer认为patch OK了,他才会去merge这个patch(当然,也有可能根本没人鸟你的patch,因为大家都很忙,没空也没义务去看或者merge你的patch,所以在开源社区混,很需要耐心)
       
         2) Bugzilla,用于report bug,所有人都有权限在上面报bug,也可将patch放在上面,可以在下面comments。
       
         3) Project repo,一些社区有自己的专门code server,用于存储项目,例如freedesktop,当然也可以使用一些免费通用的code server,例如github,gitorious等等。
       
       
      3. 代码质量和安全
       
           开源项目对代码的质量和安全会要求比较高,所以自己提交的patch最好能follow 项目已经定下的代码风格,并能用一些工具去检查代码中的常见技术和法律风险。
       
          1) 对于代码风格,一般包括代码缩进风格和 函数变量命名规则, 以统一格式可以使得code看起来更加规范和美观。
       
              Linux下常用的代码缩进格式工具有Indent和astyle,它们可以控制代码如何缩进,空行,空格,设置comment格式等等,用户可以直接指定某一中style,如K&R , Linux indent style(可以参考我的博文: Indent tool and K&R style), 一般可以在code repo里面添加一些脚本来检查 code indent format。
       
               函数和变量的命名也要符合一定的规则, 具体style有很多种,选择一种,然后写code时候都按照style来。
       
               Doxygen 文档,如果希望自己的code能很便捷的生成一些帮助文档的话,需要按照doxygen格式去添加代码注释,尤其是针对函数和变量的定义说明,方便读者快速查询函数 功能或者变量意义。       
       
          2)对于代码安全,
       
                技术安全, 最好是能用一些工具(例如clocwork)做些基本的检查,避免内存泄露或者基本的逻辑错误。
       
                法律风险,如果有条件的话,可以对自己项目的code做个IP scan,检查是否有从其他地方copy过来的code,坚持是否违反了 IP plan,如果是,就需要想办法解决
       
       
      4.  精通代码管理工具,例如git
       
      <legend id='qopkskl8'><style id='qgnhirs3'><dir id='lh4ww88h'><q id='d4lnavwh'></q></dir></style></legend>

    • <tfoot id='n5mw4lcz'></tfoot>
            <tbody id='pxziyo44'></tbody>
          • <i id='1gdukn0y'><tr id='3h5eko2w'><dt id='8e3304ix'><q id='lbp3ly4t'><span id='whyrp3zo'><b id='dn5r0kyq'><form id='9rnk2jki'><ins id='qniph4h1'></ins><ul id='sqkxyy1q'></ul><sub id='ahayhpof'></sub></form><legend id='tsyjgkdr'></legend><bdo id='kypamrfi'><pre id='00mt5kza'><center id='1m7x1pgk'></center></pre></bdo></b><th id='qo5gdw1x'></th></span></q></dt></tr></i><div id='ghcfuvb3'><tfoot id='4v2je7pd'></tfoot><dl id='rt72y2h5'><fieldset id='73yuylb7'></fieldset></dl></div>

            <small id='wrl07fxg'></small><noframes id='lbshwxr9'>

            本文来源于网络,若有侵权请联系3449817223#qq.com,将在第一时间删除。

            上一篇:项目开发基本知识 小程序开发上一篇
            下一篇公众号开发下一篇:20个软件开发常识
            <legend id='ihpp89sl'><style id='hqcha0a3'><dir id='824ah39a'><q id='gze585rx'></q></dir></style></legend>

              <i id='ej2gcrm7'><tr id='j5vcjsom'><dt id='q23ti59p'><q id='fg38fn2x'><span id='smdep8vn'><b id='4hxlzcf7'><form id='xsflni15'><ins id='etpmpmdh'></ins><ul id='ez4npuzd'></ul><sub id='4fkuefrp'></sub></form><legend id='rt2c10wg'></legend><bdo id='ktk26139'><pre id='3qjh2k03'><center id='qgmgpd42'></center></pre></bdo></b><th id='lb3drz8q'></th></span></q></dt></tr></i><div id='5kak40ih'><tfoot id='kqf0eruu'></tfoot><dl id='nxkc7v9s'><fieldset id='k4axxfjg'></fieldset></dl></div>
              <tfoot id='yi956ny0'></tfoot>
              • <small id='s7mcwz8z'></small><noframes id='apch6rib'>

                  <tbody id='1409rizd'></tbody>