最近做了一个多人协作,规模也不小的C++项目,其中做了很多有价值的 实践,在此记录,以来说明C++项目需要关注的各方面的问题
工程的组织
当项目由团队共同开发,而非一人来完成时,工程的如何组织会成为一个重要问题;工程组织它是团队工作的基础,不能很好的解决这个问题,将使项目陷于 混乱。 而此问题的本质是,建立何种工程结构以保证,多人 并行多版本的有序开发 。而这个问题不是使用vs2008这种集成环境,能解决好。 在实践中,我的理解有以下几个方面的工作:
代码目录结构
代码目录结构,是代码内在大粒度逻辑结构的体现;
小的项目,根本不用关心这个问题,直接在在vs2008这样的ide里环境就可以搞定了。但当系统要解决的问题越来载大、越来越庞杂时。你要开始考 虑更合适的组织你的代码。分层,共公代码库都会出现,而这些都会在你的目录结构中体现。
目录结构,是一个逐步进化的过程;
目录很重要,但也不需要一开始,就本着假想的终级目标一次搞定。 这是错误的,因为更细粒度的目录结构的使用是有成本的。而以你自己假想的目标一定是错误的。所以还是目录结构还是随着实际需要来慢慢进化 吧。
版本管理
版本管理不仅仅为了防止代码的丢失
团队中,我们时常常把没有用过版本管理的同事来开玩笑,这不是说每天备份几次代码来防止丢失代码的方法不可取,而是版本管理不仅仅解决这个问题,而 且他还可能以:
- 记录你代码修改的历史,为后来找到代码变化的前因后果和中间状态。
- 帮助你建立与还原各种尝试性的代码环境
- 支持同时维护老版本的代码和新版本功能性的开发
- 提供多人并行开发引起的冲突解决机制
工具的选择: 易用、轻量级
如果没有共公的版本管理服务支持,自己用一个git 来管理代码也是非常好的选择。 另外,git 服务对于一个普通的linux用户来说,也是比较容易建立的。
编译组织
使用vs2008,来解决就编译,还需要过多的考虑么? 当有以下问题时,你将会头痛不止。
- 多个工程存在,你想让它晚上自动编译时,往持续集成方向努力时
- 当你想把原来一个模块库改一个名字或改所有的编译参数时
- 你想调整一下代码的目录结构时
当你忍受不了的时候,可以考虑一下boost-build , 当然新东西的引入是有成本的。 但学习一次,到处使用 的诱惑还是很大的
相关推荐
《Visual C++ 工程应用与项目实践》一书的随书光盘源码1.rar包含了一系列关于使用Visual C++进行工程开发和实践的示例代码。这些源码旨在帮助读者深入理解C++编程语言在实际项目中的运用,提升软件开发能力。下面,...
在本项目实践中,我们关注的是使用C++编程语言与Qt框架来实现一个学生信息管理系统。...总的来说,这个项目涵盖了C++和Qt的实战应用,以及软件工程的基本原则,对于学习和提升IT专业技能是非常有价值的实践。
《Visual C++ 工程应用与项目实践:物流管理系统》 在信息技术日益发达的今天,物流管理系统已经成为企业管理的重要工具,特别是在供应链管理中扮演着至关重要的角色。Visual C++作为Microsoft公司开发的一款强大的...
《Visual C++项目工程实践》10-2章节主要涵盖了在使用Microsoft Visual C++进行实际项目开发中的关键技术和方法。这一部分可能包含了深入的编程概念、项目构建过程以及调试技巧,旨在帮助学习者提升在C++环境下的...
"C++设计模式-工程模式"这个标题暗示我们将深入探讨C++中的一种核心设计模式——工厂模式。工厂模式是创建型设计模式,它提供了一种创建对象的最佳方式,允许我们在不指定具体类的情况下创建对象。在描述中提到的...
在本实验课程中,我们将深入探讨“小小图书馆”...这个项目不仅有助于提高编程技能,还有助于理解软件工程的实践,包括代码组织、测试和调试等过程。在实践中不断学习和改进,你将能够编写出更加复杂、健壮的应用程序。
在《Visual C++项目工程实践》这一主题中,我们聚焦于使用Microsoft的Visual C++工具进行实际项目的开发和管理。这个资源分为多个章节,这里涵盖了第05章和第06章的内容,由于文件大小的限制,每个章节被单独压缩...
在本项目实践中,我们聚焦于“人工智能-项目实践-信息管理系统-学生项目,运动会信息管理系统”。这个系统主要是针对学生设计的,旨在管理和处理运动会相关的各种信息。通过运用人工智能技术,系统能够实现自动化、...
在信息技术领域,开发一款学生成绩管理系统是常见的项目实践,尤其对于初学者来说,这既是一个理解C/C++编程语言的好机会,也是提升软件工程能力的有效途径。本项目“C/C++课程设计-学生成绩管理系统”就是这样一个...
通过深入理解和实践这些C和C++代码精粹,开发者能够编写出更加高效、可读性强的代码,为项目贡献坚实的基础。无论是初学者还是经验丰富的开发者,都应该不断学习和探索这些优秀实践,不断提升自己的编程水平。
作为华东交通大学软件工程专业学生的课程设计作品,这个项目不仅锻炼了作者的编程技能,也展示了良好的软件工程实践。代码清晰明了,有助于初学者理解面向对象编程的基本概念和C++的实际应用。通过阅读和分析源代码...
这个系统具备录入销售记录和查看销售记录等核心功能,非常适合用于教学和实践C++编程技巧,特别是在软件工程和数据管理方面。 1. **C++语言基础**: C++是一种静态类型的、编译式的、通用的、大小写敏感的、不仅...
8. **软件工程实践**:良好的编程规范、注释、模块化设计都是这个项目中需要注意的。此外,代码测试和调试也是确保系统功能正确性的重要步骤。 通过这个项目,学习者可以深入理解C++语言的核心特性,掌握面向对象...
该项目是一个结合了C#和C++编程语言的人工...总的来说,这个项目融合了多种IT技术,包括自然语言处理、数据结构、算法、数据库、编程语言特性和软件工程实践,是一个综合性的AI项目,对于提升写作效率具有显著价值。
《C++课程设计-图书管理系统》是一份针对计算机专业学生,特别是C++学习者的实践项目。这个项目旨在帮助学生深入理解和应用C++编程语言,同时锻炼他们在实际问题解决中的编程能力。图书管理系统的开发涵盖了软件工程...
【标题】"C++课程设计-个人收支管理系统"是一份基于C++编程语言的课程实践项目,旨在让学生通过实际操作来提升对C++语言的理解和应用能力,特别是针对实际问题的软件开发技能。这个系统主要目标是管理个人的收入与...
在C++编程中,商品销售统计系统是一个常见的实践项目,它涉及到了面向对象编程、文件操作、类的设计等多个关键知识点。以下将详细阐述这些概念。 1. **面向对象编程 (Object-Oriented Programming, OOP)**: 在这个...
总结起来,这个主题涵盖了数据结构中的链表应用、C++的运算符重载、多项式的数学运算以及软件工程的测试原则。通过学习和实践这一部分内容,开发者可以提升在算法设计和实现方面的技能,为解决更复杂的问题打下基础...
【标题】:“毕业设计 计算机专业-c++课程设计-个人收支管理系统”是指一个针对计算机专业学生在毕业设计阶段完成的项目,该系统利用...通过这样的设计,学生不仅能提升编程技术,还能学习到软件工程的方法论和实践。
本项目是一个C++课程设计,旨在让学生掌握C++编程技能的同时,理解和实践如何构建一个学生成绩管理系统。 该学生成绩管理系统的设计与实现,涵盖了以下几个关键知识点: 1. **数据结构与算法**:在管理大量学生和...