请问一下,想要对一个开源的项目进行二次开发增加一些自己的功能,但是源代码又看不懂,请问一般您们是怎么做的?

请问一下,想要对一个开源的项目进行二次开发增加一些自己的功能,但是源代码又看不懂,请问一般您们是怎么做的?

https://github.com/codemirror/dev/

阅读 1.6k
avatarAI BotBETA

当您想要对一个开源项目进行二次开发,但源代码难以理解时,以下是一些通常的步骤和建议:

  1. 了解项目背景

    • 首先,阅读项目的官方文档、README、贡献指南(CONTRIBUTING.md)等。
    • 了解项目的目标、架构、主要组件和依赖关系。
  2. 熟悉代码库

    • 使用IDE(如Visual Studio Code、IntelliJ IDEA等)的导航功能来浏览代码库。
    • 查找与您的功能相关的代码部分。
    • 尝试理解代码的基本结构和主要流程。
  3. 设置开发环境

    • 按照项目的说明设置本地开发环境。
    • 确保您能够成功构建和运行项目。
  4. 单元测试

    • 了解并运行项目的单元测试,以确保您对代码的行为有一定的理解。
    • 如果可能的话,增加或修改单元测试以验证您的更改。
  5. 使用调试工具

    • 使用IDE的调试功能来逐步执行代码,并观察变量的值和行为。
    • 这有助于您更深入地理解代码的执行流程。
  6. 阅读相关文档和教程

    • 如果项目使用了特定的框架、库或技术,查找并阅读相关的文档和教程。
    • 这将帮助您理解代码中的某些部分是如何工作的。
  7. 提问和寻求帮助

    • 如果您对代码中的某些部分感到困惑,可以在项目的issue追踪器中提出问题。
    • 您还可以加入项目的开发者社区或论坛,与其他开发者交流。
  8. 写注释和文档

    • 在您理解代码的过程中,为代码添加注释和文档。
    • 这将有助于您和其他开发者更好地理解代码。
  9. 逐步增加功能

    • 不要试图一次性实现所有功能。相反,尝试逐步增加功能,并在每一步都进行彻底的测试。
    • 这样做可以降低错误的风险,并使您能够逐步地熟悉和理解代码库。
  10. 遵循贡献指南

    • 在进行任何更改之前,确保您已经阅读并遵循了项目的贡献指南。
    • 这将确保您的更改与项目的标准和最佳实践保持一致。
  11. 编写测试用例

    • 为您添加的功能编写测试用例,以确保它们按预期工作。
    • 这将帮助您在未来维护代码时更容易地识别和修复问题。
  12. 提交Pull Request

    • 当您完成功能开发并进行了充分的测试后,提交一个Pull Request到项目的代码库。
    • 在Pull Request中提供详细的说明和文档,以便其他开发者了解您的更改。

对于您提到的具体项目(CodeMirror),它是一个文本编辑器框架,通常用于Web应用程序中。您可能需要熟悉JavaScript、HTML和CSS,以及CodeMirror的API和插件系统。您还可以查找与CodeMirror相关的教程和示例代码,以帮助您更好地理解其工作原理和用法。

3 个回答

对于自己不熟悉的代码,想学习他,首先你需要完全了解代码暴露的所有参数,最好能找到对每一个参数应用的示例,打开浏览器控制台,使用断点功能,运行每一个示例,看这些示例是如何一步一步进行下去的,这样子你就会看到创建这些示例,这套代码一共运行了多少个函数,琢磨下函数前运行的那行代码的意义(通常通过命名可以看出来)。
AXUI在开发组件/模块过程中也就是反推的过程。
有一点需要注意就是没有必要将代码从第一个函数看到最后一个函数,这样看完了,你也会云里雾里,因为不知道作者在开发过程中会在哪个地方再插入一个函数或一个代码片段。
真诚的开源代码应该自带全面的演示示例,AXUI基本上对函数或模块的每一个参数都有演示示例,确保用户既能全面使用,也能深入学习。

  1. 先搜,看看有没有人做过
  2. 看官方的文档和例子,有没有介绍
  3. 寻找类似的功能,比如你提到的 codemirror,要增加新的语法解析,就看现有的语法解析;要添加框架适配,就看现有的框架适配
  4. AI 辅助生成也是必须考虑的,很多时候能解决大部分问题
  5. 基本上,流行项目,用户量大,生态丰富,大部分用例都能找到,AI 也能给出很有参考价值的代码;小众项目、学生项目、KPI 项目,没什么人用,也没什么生态,就比较困难。所以建议选择更流行的项目。

二次开发?外包的那种?
是的话基本没啥好办法,捷径就是源码。
或者你定位到输出,把结果再包装一下。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
极客观点
子站问答
访问
宣传栏