git 思考 -- 个人开发者与团队开发有何不同

团队开发的注意点

  • 一. 融入项目为什么和个人编程不一样
    • 1. 大型项目需要注意哪些问题
    • 2. 如何与团队进行合作
    • 3. 解决大型项目的问题
    • 4. 流程化开发管理
    • 5. 如何与团队进行合作
    • 6.git 使用
    • 7.代码规范

一. 融入项目为什么和个人编程不一样

编程的学习大部分时候都是个人进行的–这意味着大部分情况下你最开始不可能做出非常大型的项目,也不具备和他人合作学习编程的条件。所以这种学习更多的注重的是语法,方法,模块,函数的实现,以及对语言更多的理解。而加入项目学习后,与个人学习便开始了不同。除了语法的学习外,你需要关注之前不需要关注的问题。这些问题可能在没经验的人眼中不是很所谓,但对于团队工作的进度和难度,恰恰影响极大。以下是我在我写文章的时候能想到的问题,肯定还有缺漏,自行理解补充

1. 大型项目需要注意哪些问题

  • 如何在减少代码量的同时实现质量有保障的业务代码
  • 如何通过一定方式跳过一些相同、重复、必须的工作
  • 如何构建可复用的代码
  • 如何在需要修改代码的时候减少工作量
  • 快速定位代码错误
  • 如何明确且清晰得让别人上手自己的项目
  • 如何保证自己的项目能够方便得拓展其他功能
  • 在庞大代码运行的同时如何保证项目代码的发应和反馈速度

2. 如何与团队进行合作

  • 如何与其他同事有效进行编程沟通
  • 如何快速获取同事的帮助
  • 如何读懂别人的代码或者让同事读懂自己的代码
  • 如何不与同事的工作进度相互影响
  • 如何支持且不影响项目、同事的工作

3. 解决大型项目的问题

作为一名小菜鸟,只是初步知道并且理解为何会出现这类问题以及这类问题的重要程度。至于解决这些问题,需要像其它dalao一样具备有多年的项目经验以及技术基础。
解决大型项目的这些问题,最值得参考的便是设计模式,设计模式是前人(头秃的Coder)的经验累积和无私奉献,设计模式的出现可以解决大部分以上提到的大型项目问题。例如通过策略模式对项目代码进行解耦、通过单例模式优化系统性能等。在接触项目代码,或者理解设计模式作用后,对设计模式会具有更深的理解。设计模式的学习有些困难,有些概念较为抽象,如果不知道设计模式的作用和伟大,可能无法静下心来学习设计模式。笔者的设计模式学的还很浅,如果有需要学习请自己学习或询问dalao,推荐书籍《Head First 设计模式》

4. 流程化开发管理

不同的公司会采用不同的流程开发管理模式,对于开发小团队的开发模式而言,尤其是没有一个统一的规范的流程之前,会逐渐摸索如何整理出一套可用的保证正常开发上线的流程,在这期间,在没有权限限制的情况下,个人操作如何保证不影响项目开发是重中之重。而大型规范化团队的开发总会有这一套代码管理系统,甚至会抽象提取出一整套流程并进行界面化管理。

5. 如何与团队进行合作

  1. 操作系统的使用
    一般的代码都会选择运行在linux系统,网上有着诸多原因。例如linux对比window底层性能更快,代码运行更快;linux开源免费,操作方便;linux便宜快捷,性价比高。无论如何,大部分时候,linux系统的使用是程序运行的必备条件,项目程序也基本上会运行在linux系统上。所以,学会基本的linux使用,是程序员的入门课程。 当然这里不是要卖你程序员的课程,而是想让你明白,你的同事基本都会linux,大部分时候也需要linux操作。所以,要和团队进行合作,学会linux必不可少,可能不需要像运维一样对着linux掌控雷电,但是好歹也要像使用window流畅自如。Ubuntu或者cywin的配置教程,个人笔记在另一篇文章
  2. 编程环境和工具的使用
    一千个人里有999个哈姆雷特,还有一个在百度。不同的人使用不同的编程工具,环境这很正常,就像每个人有自己的生活习惯。但是要在工作中与其他同事(完美契合),相同的工作环境和工作工具必不可少。 举个简单的例子,A在window上工作,B在linux上工作,当A需要B来电脑进行代码教学或者指导,或者介绍项目内容时,如果还需要A自己操作电脑,那就真的很不合适了(来到别人的电脑里就像来到自己家一样,操作很熟悉,里面的文件名字又好听,我超喜欢在这里的)。下面举几个会影响工作交流的环境与工具
    • 编程工具 :idea vim emacs Androidstdio VsCode pycharm 等 不同的编程工作操作不同,不能指望一个人什么都精通
    • 编程环境
      • 代码存放位置与路径配置
      • 代码库 版本
      • git 路径配置 svn路径配置
      • 相同的linux配置

代码版本以及编程工具的选择,svn或者git的选择,linux配置,项目路径选择视团队而定,请按照规范配置

6.git 使用

我的理解中,对新事物的理解更喜欢先明白背后的原由和原理,这会让你在带着问题思考的情况下对新事物有更深的理解。那么,让我们了解一下为什么要用git或svn。

  • 如果A和B要改动同一个主项目,假如项目在linux系统上,两个人在本地修改代码,不通过版本控制会发生什么。例如 Acopy了修改的文件到主项目进行覆盖,B也copy了修改的文件到主项目进行覆盖,结果导致由于文件覆盖导致代码丢失,而且没有报错,没有提示。这在个人编程中无需考虑的问题将极大得影响了多人合作的进度。 如果通过比对文件内容来一点一点合并代码内容,明显不可能,极大的工作量会导致项目进度急剧拉长。

  • 这个时候,svn登场了。他管理了一个主项目库,当你需要项目代码时,方便得拉取代码。最重要的是,他可以让A和B提交的代码提交到同一个代码库里。那么刚刚的问题svn怎么解决的呢。进行代码提交时,如果A和B没有修改同样的文件,那么直接覆盖项目文件就好了。如果修改了同一个文件,那么svn的做法是,不让你上传并且告诉你:同事和你修改了同一部分文件,直到你把代码改到和同事的代码不冲突,才可以提交。

    svn和git都提供了分支管理,只是实现不同导致少人使用svn的分支管理而一般都是使用git。

  • 那么为什么要分支管理呢? 网上的解释是:假设你准备开发一个新功能,但是需要两周才能完成,第一周你写了50%的代码,如果立刻提交,由于代码还没写完,不完整的代码库会导致别人不能干活了。如果等代码全部写完再一次提交,又存在丢失每天进度的巨大风险。现在有了分支,就不用怕了。

  • 在我的个人理解中,如果单独在同一个分支开发,每次提交都需要进行merge操作,操作繁琐。同时,多人同时提交代码让代码库变化太多太快,可能会影响项目开发的效率,同时,代码可能需要修改,所以在分支上开发不会影响主分支库代码。所以才需要多分支开发。

  • 同时,svn和git还会记录你每次提交的修改,以及可以回退版本。这就是之后的深入内容了。 git的配置不算很难,一般可以一键安装,主要是配好环境让开发者更容易使用git,比如随时查看分支,git快捷键。建议和配置shell脚本执行文件一起进行git配置,搭建最快捷舒适的开发环境。

  • shell脚本相关的相关配置可以找dalao拿.bashrc文件或者学着装zsh git可以取网上找相关的命令,主要使用的命令不多,重要的是理解每个命令的作用,同时通过一个项目代码库进行git学习,可以是github自建项目,推荐github学习项目

7.代码规范

刚开始接触项目代码不可能达到对项目融会贯通,那么至少也要做到遵守规范项目开发,熟悉流程,学会复用已有代码。

  • 代码规范 wiki上有对应的代码规范,规范是提高同事之间交流代码速度的根本,当然还有文件名规范,方法解耦规范,逻辑流程规范等,是项目可维护性的基础。
  • 熟悉流程 我觉得从一个模块的流程头开始学习,研究代码到流程结束,可以较快的掌握项目的开发流程,也有利于举一反三,请自己请教dalao模块流程。
  • 熟悉常用方法模块 例如 log send_suff 以及各种 check 判断,?DEBUG 宏使用等
  • 笔者写文的时候只学到这里。有需要的人看到这里请自己总结。

你可能感兴趣的:(git)