《构建之法》阅读笔记
第三章 软件工程师的成长
个人阅读书籍有以下几个习惯:首先,在开始阅读前,我会大概了解书籍的主题、作者和内容,以此来选择适合自己的书籍。其次,我通常会做一些预习,比如阅读目录和部分概念解释等,以较快的了解书籍的呈现方式和体系结构。第三,我经常在阅读过程中摘录重要概念和分析,记录对于书籍本身和所读内容的思考和感觉,以便回归继续阅读时更容易理解。
这种方式阅读的缺点是有时候会太过注重细节而忽略全局,导致难以理解全局结构和内在意义。同时,如果阅读的重点过于集中在细节上,可能无法把握或注意到作者所要传达的整体思想和原则,从而阻碍真正理解书籍的意义。此外,写下的笔记可能过于详尽,这样在回顾时会花费过多的时间查找和筛选笔记。
我的解决方案是将阅读分成以下三步:
第一步,全局观察。在开始阅读前,需要预热,通过阅读书籍的介绍和概述,了解书籍的主旨和结构。同时,可以通过查找关键词、作者的历史背景等信息,进一步扩展对书籍主题的认识。
第二步,重点理解。在深入阅读书籍的过程中,时刻关注作者的思想、原则和技术,通过思考和反复阅读,逐渐理解全书的内在意义。这个阶段需要注重作者的论述结构、范围和章节之间的关系,同时尽可能地避免无关的或个人兴趣之外的领域。对于难以理解的概念和内容,可以查找其他书籍或者互联网资源来加深理解,同时通过答疑、讨论等方式来帮助自己理解。
第三步,全局回顾。在阅读结束后,需要花费时间来回顾所阅读的材料。这个阶段可以立即回顾所做的笔记和摘录,对于可能出现的错误、疏漏或不理解的问题进行补充和纠正。同时,可以尝试以某种方式将所理解和学习的概念整理并复述出来,从而加深对于所学内容的理解和应用,形成知识构建和内化。
通过这三个步骤,可以更好地把握全局,从而有效利用阅读时间和精力,获得更加深入的东西,并避免陷入只关注细节的窘境。
3.1 个人能力的衡量与发展
①软件工程包括了开发、运用、维护软件的过程中的很多技术、做法、习惯和思想。软件工程把这些相关的技术和过程统一到一个体系中,叫“软件开发流程”,软件开发流程的目的是为了提高软件开发、运营和维护的效率,以及提升用户满意度、软件的可靠性和可维护性。
②初级软件工程师的成长包括以下几种:
(1)积累软件开发相关的知识,提升技术技能(如对具体技术的掌握,动手能力)。例如:对JAVA、C/C++、C#的掌握,诊断/提高效能的技术,对设备驱动程序、内核调试器的掌握,对于某一开发平台的掌握
(2)积累问题领域的知识和经验(例如对医疗或金融行业的了解)
(3)对通用的软件设计思想和软件工程思想的理解
(4)提升职业技能(区别于技术技能),包括:自我管理的能力、表达交流的能力、与人合作的能力、按质按量完成任务的执行力
(5)实际成果——最重要的评价标准
3.2 软件工程师的职业发展
自我评估,自我评价清单:
第四章 两人合作
4.1 代码规范
包括代码风格规范和代码设计规范
4.2 代码风格规范
代码风格原则:简明、易读、无二异性
缩进:4个空格,而不是TAB
行宽:限定为100字符
括号
断行与空白的{}行
分行
命名:匈牙利命名法
下划线:分隔变量名字中的作用域标注和变量语义
大小写(Pascal形式和Camel形式)
注释
4.3 代码设计规范
函数:只做一件事,并且要做好
goto:有助于程序逻辑的清晰体现
错误处理:参数处理、断言
类的处理
4.4 代码复审
①形式:自我复审、同伴复审、团队复审
②目的:找出代码错误、发现逻辑错误、发现算法错误、发现潜在的错误和回归性错误、发现可能需要改进的地方、传授经验
③代码复审后把记录整理出来:
(1)更正明显的错误
(2)记录无法很快更正的错误
(3)把所有的错误记在自己的一个“我常犯的错误”表中,作为以后自我复审的第一步
4.5 结对编程
①角色:
驾驶员:控制键盘输入
领航员:起到领航、提醒的作用
②好处:(1)在开发层次,可以提供更好的设计质量和代码质量,两人合作解决问题的能力更强。
(2)对开发人员,带来更多的信心,高质量的产出带来更高的满足感。
(3)企业管理层次上,有效地交流,相互学习和传递经验,分享知识,取得更高的投入产出比。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)