课程链接:https://edu.cnblogs.com/campus/xnsy/SoftwareEngineeringClass2/
作业要求链接:https://edu.cnblogs.com/campus/xnsy/SoftwareEngineeringClass2/homework/2706
课程目标:了解软件开发的过程以及开发软件过程中该如何协调好与外界变化带来的影响。
如何实现目标:通过认真学习书本+上机实践
一.建立博客并介绍自己
1.https://home.cnblogs.com/u/pyxhopkins/
2.目前大二学生,喜欢人文艺术的东西,喜欢莫奈的画,喜欢看展,对世界有着同理心。对世间很多事情感兴趣,但很多时候不过也三分钟热度。
二.阅读与思考
•当初你是如何做出选择软件工程专业的决定的?
对于软件工程这个专业其实之前是没有很多概念的,是因为以前看了一本小说让我对计算机很向往,如果非得追本溯源的话,让我感兴趣的是”黑客“,后来转专业的时候因为一些原因没有报网络工程转而报了软件工程,虽然软件工程也很不错,但是对网络安全这一系列也还是存在兴趣,不过既来之则安之,既然选择了也得好好对待它。而且后来也发现了些感兴趣的点。
•你认为过去两年中接触到的课程是否符合你对软件工程专业的期待,为什么?
仔细算来我接触软工也只有一年时间,在这一年的时间怎么说呢,前半年在玩耍,后半年才多接触了些。对于学校的课程符合期待吗?也还好吧,就是可能课时太少了,发的书好多都没讲完。
•你觉得软件工程是你喜欢的领域吗,它是你擅长的领域吗?
对于软件工程可能不是最喜欢的领域但也算得上蛮喜欢的了。擅不擅长我不知道,毕竟现在还在打基础。可能擅长吧也可能不擅长,不过毕竟大多数人都是靠着努力学习才擅长的,所以努力咯。
•将来你会选择从事软件开发相关的工作吗?是的话给出你想去的城市、公司和岗位,否的话给出原因
短时间内会考虑,长时间可能不会。杭州上海。公司岗位暂无。
(2)即将大三的你,对照前人们走过的路和描述未来发展,现在的你
•自我感觉你已经具备的专业知识、技能、能力有哪些?已经写过的代码量是多少?
学了几门语言,也学了数据结构(虽然通过了考试,但是觉得学的太水了)和数据库。代码量没有算过可能几千行吧。
•离成为一个合格的软件工程专业本科毕业生,在专业知识、技能、能力上还差距哪些?
自我感觉差得还很多,学的太浅了也太少了,很多东西没有追其原理,项目做得太少了。
3)大三是一个人生选择的十字路口,考研、工作、考公、出国,不同的选择在大三就有不同的努力方向。而无论考研还是工作的每条路径 ,也有许多不同的分支。
•对照以上你阅读的前人们的经历,你的选择是什么?
可能会工作(在学校里待太久了想出去看看,但也可能几年后重返校园。(谁又说得准呢
•在这种选择下,你认为你相比其他同学来说有何优势,有何劣势?
优势:短期而言比别人有更多的项目经验,更能从实践中体验做中学。
劣势:如果没有读研的话起点低一些。文凭没有竞争力。
•针对你的选择,你给自己的大三设定的规划安排是什么?
大三好好学习。多写代码,多学些新东西。
三.提有质量的问题
快速看完整部教材,列出你仍然不懂的5到10个问题,发布在你的个人博客上。注明是哪一章哪一节。要有观点、 有证据或分析。字数不是直接的考核标准,但是要求篇幅长到能把观点表述清楚。
1. 4.2.1(P64)结论里提到Tab键在不同的情况下会显示不同的长度,所以缩进最好用4个空格。
当时我不理解为什么在不同的情况下会显示不同的长度,后来通过查阅发现制表符表示的长度是由单词的长度和制表符的宽度决定 的。
如果单词的长度用 wordLength 表示,制表符的宽度用 tabSize 表示,制表符所代表的空白字符的个数用 tabAppearSpaceLength 表示,这三者满足两个条件:
tabAppearSpaceLength >=1 && tabAppearSpaceLength <= tabSize
(wordLength + tabAppearSpaceLength) % tabSize == 0
参考链接:https://blog.youkuaiyun.com/shfqbluestone/article/details/50562409
2. 4.2.9(P68不算代码第四行)中说到:注释(包括源代码)应该只用ASCII字符,不要用中文或其他特殊字符,否则会极大地影响程序的 可移植性。
为什么会影响软件的可移植性?是因为写软件的人可以来自各国,写中文或其他语言注释大家可能看不懂?所以统一用ASCII字符?
3. 4.3.3.3(P70)错误处理中提到了如何验证正确性?那就要用断言。
一开始我不理解什么是断言,经过查阅知道了在单元测试时,程序员预计在程序运行到某个节点位置,需要判断某些逻辑条件必须满足,这样下面的一些业务逻辑才可以进行下去,如果不满足,程序就会"报错"甚至是"崩溃"。接着又在百度里看见说单元测试必须使用断言, 那么为什么单元测试必须使用断言呢?
参考资料:https://www.jianshu.com/p/9b8c88deed6a
4. 4.4.3.5(P77)效能中提到一个问题“c#中string的操作是否能用StringBuilder来优化?"
通过查阅发现StringBuilder类在一些情况下的确高效,里面提到string是引用类型所以CLR就会把string类型保存在托管堆上, 为什么?
参考资料:https://www.jb51.net/article/84526.htm
5. 13.3.2(P291.d)Pair-wise和正交试验设计方法中提到”经验告诉我们,众多因素中,通常只有两个因素对某个Bug的发生起关键作用“
这是为什么呢?为什么是两个?
四.了解和调查源程序版本管理工具
Bitbucket:
优点:安全 支持中文 免费的闭源项目 支持git 支持5人以内合作开发最多可以有8人开发
缺点:网页端的git仓库不如github好用
Github:
优点:支持把你浏览的项目最新进程发email给你
代码片段的引用,评论,分享,讨论非常方便
开源项目多
缺点:不是完全免费 对中文不够友好 wiki功能弱
Git:
优点:适合分布式开发,强调个体。