1.《软件工程》慕课
完成了慕课的视频课学习及课后习题
2.构建之法讲义
本节的构建之法主要强调了代码的性能测试。编写正确运行的代码只是完成整个软件工程的基础。如何在原有的基础上对代码进行进一步的更新改进,提高代码的质量也是值得注意的。
3.利用Pycharm对Github进行操作
由于网上相关的博客比较多,按照相关操作进行配置即可,不在此赘述。目前选用的git工具是Github提供的Github Deskop,省去了不少git命令。
4.代码规范性。
对于编程而言,首先是代码的规范性。Python语言主要规范是Google给出的。下载了Style guide进行了简要的学习,最主要还是动手编写,在实际中发现问题,将相应的规范烂熟于胸,潜移默化于编写的过程中。
5.代码性能测试
对代码性能进行测试可以清晰地看到代码运行主要花费的时间在哪,方便下一步的改进,一般而言,改进代码运行时间最多的地方可以有效地增加代码的质量。当然这并不是唯一的。对于比较复杂的代码,可以借助工具进行相应的分析。对简单的代码可以借助Pycharm中自带的memory_profiler进行相应测试。下面是计算器程序的一段代码,并借助自带的包进行测试。
import profile import re #判断格式 for j in range(len(formula)): if formula[j] in Operators and formula[j+1] in Operators: print('FORMAT ERROR') elif formula[j].isalpha(): print('INPUT ERROR') elif formula[j] == '/' and formula[j+1] == '0': print('VALUE ERROR') #乘方计算 def power(list,sign): a = list.index(sign) if sign == '^': b = str(float(list[a - 1])**float(list[a + 1])) else : return list del list[a] del list[a - 1] del list[a + 1] list.insert(a - 1, b) return list def md(l, x): a = l.index(x) if x == '*' and l[a + 1] != '-': k = float(l[a - 1]) * float(l[a + 1]) elif x == '/' and l[a + 1] != '-': k = float(l[a - 1]) / float(l[a + 1]) elif x == '*' and l[a + 1] == '-': k = -(float(l[a - 1]) * float(l[a + 2])) elif x == '/' and l[a + 1] == '-': k = -(float(l[a - 1]) / float(l[a + 2])) del l[a - 1], l[a - 1], l[a - 1] l.insert(a - 1, str(k)) return l def fun(s): l = re.findall('([d.]+|/|-|+|*)', s) sum = 0 while 1: if '*' in l and '/' not in l: md(l, '*') elif '*' not in l and '/' in l: md(l, '/') elif '*' in l and '/' in l: a = l.index('*') b = l.index('/') if a < b: md(l, '*') else: md(l, '/') else: if l[0] == '-': l[0] = l[0] + l[1] del l[1] sum += float(l[0]) for i in range(1, len(l), 2): if l[i] == '+' and l[i + 1] != '-': sum += float(l[i + 1]) elif l[i] == '+' and l[i + 1] == '-': sum -= float(l[i + 2]) elif l[i] == '-' and l[i + 1] == '-': sum += float(l[i + 2]) elif l[i] == '-' and l[i + 1] != '-': sum -= float(l[i + 1]) break return sum def calculate(expression): ex = [] ans = 0 if '(' not in expression: ans = fun(expression) return ans for i in range(len(expression)): if expression[i] == '(': ex.append(i) # ex=[6,7] elif expression[i] == ')': # 14 temp = 0 sub = expression[ex[len(ex) - 1] + 1:i] temp = fun(sub) expression = expression[0:ex[len(ex) - 1]] + str(temp) + expression[i + 1:len(expression) + 1] ex.pop() return calculate(expression) #性能测试 profile.run("calculate()")
可能是因为计算器的程序调用的次数少,并不能完全显示代码性能。代码性能测试
6.学习记录
学习时段 |
内容 |
收获 |
2.24 10:00-11:30 |
慕课《软件工程》视频课 |
初步了解代码测试 |
2.25 10:00-11:30 |
慕课《软件工程》视频及部分习题 |
巩固单元测试的相关概念 |
2.26 10:00-11:30 |
《构建之法》 |
“个人开发技术” |
2.27 10:00-11:30 14:00-16:30 |
《Python编程无师自通》 |
第四章“函数”, 第五章“容器” |
2.28 10:00-11:30 14:30-15:30 |
《Python编程无师自通》 |
第六章“字符串操作”、第七章“循环” |
2.29 10:00-11:30 |
《Python编程无师自通》 |
第八章“循环” |
3.1 10:00-11:30 |
《Python编程无师自通》 |
第九章“文件” |