协作,就是和他人一起工作,在程序开发项目中是非常有用的,因为这样可以发挥每个人的特长。由几个人组成团队共同开发一个大型程序可以加快项目的进度,也可以减少单个程序员的负担。
一架航天飞机的系统包含40万行代码,新型小汽车的系统包含1亿行代码,社交软件脸书(Facebook,2021年12月更名为Meta)的总体项目则包含6000多万行代码。如果是由你一个人来编写几百万行代码,恐怕需要花上一辈子的时间。
通过分工协作的方式完成项目可以让每个人都发挥自己的长处,帮助你加速开发出更高效的程序。
下面是一些让团队合作更加顺利的小窍门:
设定清晰的目标。 确保每个人都准确地知道自己应该为整个项目做什么,注意不要遗漏项目中的任何部分。
专注于自己的长处。 按照每个人的兴趣和特长来分配任务,使得每个人都能够乐于且擅于完成自己的工作。
设定合理的日程计划。 给自己足够的时间来完成工作,同时又要有足够的紧迫感来推进项目进度。
确保工作量均衡。 尽管每个成员都负责不同的任务,但是需要确保均衡地分配工作量,不要让某些成员觉得自己的工作量太大。
设定明确的角色。 确定每个人的角色,比如记录者、测试者、调试者,以及其他你所需要的角色。设定明确的角色可以帮助你更好地专注于自己的工作。
如果项目规模不大,比如,你在课上做的那种项目,大规模的团队合作就不合适了。 结对编程 是一种由两个人在同一台电脑上完成项目的工作方式。程序员通过这种方式可以加快工作速度并减少错误。
在结对编程中,每个人都扮演一个特定的角色,一个人作为 驾驶员 ,另一个人作为 领航员 。驾驶员负责控制键盘,也就是负责输入代码并进行检查。领航员负责告诉驾驶员应该编写怎样的代码,还要负责在这个过程中捕捉bug。
驾驶员和领航员在编写代码时应该保持沟通。结对的两个人应该经常互换角色,让每个人都有机会做驾驶员或领航员。
很多程序员要花很多时间针对他们在编程中遇到的问题搜索解决方案。当你编写程序时,你可以借助很多资源来完成项目,很多资深的程序员也会向其他人寻求帮助。
在编写程序时,你应该尽量想办法利用别人的成果。 这并不是说你可以复制别人的代码作为自己的成果, 而是你可以借鉴别人的想法,或者是复制其中一部分代码。
你应该为此声明 归属 ,确保其他程序员对他们的成果拥有署名权。如果你的程序全部或者部分是你自己编写的,但是受到了别人的启发,你应该在注释或者README文件中载明。如果你想要复制别人的代码,你需要先征求作者的同意,或者查看程序的版权许可协议。然后,你需要声明哪些是其他人的代码,哪些是你自己编写的代码。
当你复制别人的代码用在自己的程序中的时候,记得一定要在注释或者README文件中声明归属。
下面这个例子展示了应该如何声明归属:
我基于@the_coding_master制作的示例项目进行了修改,使用了更多的发光效果,加入了一个海龟造型,并使用了来自@music_lover的音乐,还要感谢@gamer_pro提供的游戏创意!
声明归属表示你对别人的辛勤工作表达感谢,同时你也为创建一个分享社区贡献了力量。需要注意的是,有时候声明归属并不是做好事,而是法律的强制规定!
在程序中声明归属类似于在撰写报告时注明引用别人的表述,或者是改述其他作者的观点。
其他人的观点,应注明参考来源。
引述其他人的观点,但用自己的文字来表达。
库 (也称模块或扩展)能够让你使用一些非常方便的 预制函数 。例如,当你编写一个游戏时,你可能需要写几百行代码来模拟一个角色在屏幕上跳跃并与其他角色互动,或者你也可以使用库,其中已经内置了“跳跃并与其他角色互动”的代码。有一些库要求你在你的程序中声明归属。
在开发过程中,你应该去寻找能够对项目有帮助的库。
为实现某个功能事先编写好的代码。
1. 说出团队协作开发程序的两个好处。
2. 判断题:大多数程序员从不需要寻求帮助。
3. 要使用其他人的代码,你需要做到哪两件事?
4. 如果你不复制别人的代码,而只是受其启发,你是否依然需要为此署名?
5. 如果你是驾驶员,领航员可以给你怎样的帮助?
6. 在结对编程中,为什么经常互换角色很重要?
7. 为什么使用物理运算库(其中包含一些能够让角色或物体产生真实的交互或运动效果的函数)对于游戏开发者很有帮助?
8. 如果有人没有经过允许就使用你的代码,不声明归属,而且还声称这些代码是他自己编写的,你会怎么想?
9. 声明归属是(选择所有正确答案):
A. 做好事
B. 法律规定
C. 表达感谢
D. 一种推动建设分享型社区的方式
答案见下面
1. 可以从以下好处中任选两条:
·可以完成大型项目。
·可以发挥不同的人的长处。
·可以有更多的人来检查代码,防止出错。
·可以互相学习。
2. 错。
3. 征求允许并声明归属。
4. 是。
5. 领航员是可靠的后盾,纵观全局,帮助驾驶员专注于编写代码,减少错误。
6. 互换角色可以让每个人都有机会从全局进行思考,并有机会从不同的视角找出程序错误。
7. 使用库可以节约时间,避免错误。通过使用物理运算库,游戏开发者可以解决编写物理引擎代码的时间,将更多的精力放在游戏的其他部分上。
8. 如果有人使用别人的代码并声称是自己编写的,很多程序员都会对此感到伤心甚至愤怒。
9. A , B , C , D 。