工作中的编程和学校里最大的不同在于:在完备的流程规范下,同事间协同开辟,按时按量交付,并不停测试迭代优化,终极能稳固的用于生产。
有人说这是软件开辟,并不是编程啊。对这就是工作编程和学校编程的差别,工作编程不光仅思量代码,代码是为体系服务的,而体系中千丝万缕的结构都与编程息息相干。
好比作为步调员,你须要搞定设计文档、流程图、伪代码、接口、测试用例,冒烟回归测试等等,以及与产物司理、UI工程师、测试工程师、数据工程师等举行共同。
以是你会留意到工作里的开辟不光仅是单纯地编程,它更像是修建一栋大楼,从规划、设计、考核、施工、装潢、再考核、交付等等,须要把假想中的修建酿成实际。
而学校里的编程更像是设计图纸搭局部模子,本日做个浴室、来日诰日做个厕所,而且用料尺度也不固定,没法形成修建。
因为我是做数据分析的。拿数据平台开辟来说,一方面有使命流程、数仓设计、定名设计、调治管理等事项,另一方面SQL开辟也有很多规范。
从需求调研规划、规范界说、模子设计、主动化开辟,到测试验证、数据资产管理等都须要留意。
对于SQL开辟,不是传统认知的写代码run乐成了事。它有编码规范、解释规范、DQL规范、DDL规范、运算符规范、表别名定名规范、调治设置规范、数据同步规范、std洗濯规范、分区规范、维表利用规范等等要求。
这是在企业数据开辟中须要严酷服从的,大概在学校里写个SQL并不会思量这么多。
除了开辟流程规范的差别外,编程自己也有很大不同,就是刚刚提到的代码规范。
学校里编程根本都是书本上大概老师教的步调,一二三四实现了就可以,很难用到实际开辟里。
现在各大互联网公司都有自己的代码规范和code review,好比腾讯、谷歌。
腾讯员工发过一篇code review,简单列几个:
- 对于代码格式规范,100%严酷实行,严重容不得一点沙。
- 文件绝不能高出 800 行,高出,肯定要思考怎么拆文件。工程思维,就在于拆文件的时间积聚。
- 函数对决不能高出 80 行,高出,肯定要思考怎么拆函数,思考函数分组,条理。工程思维,就在于拆文件的时间积聚。
- 代码嵌套条理不能高出 4 层,高出了就得改。多想想能不能 early return。工程思维,就在于拆文件的时间积聚。
谷歌开源项目风格指南,对各种语言大型开源项目都给出了代码规范:
拿Python来说,它分别对风格规范和语言规范做了具体分析。
对于Python非常处理处罚,有如下发起,非常必须服从特定条件:
- 优先公道的利用内置非常类.好比 ValueError 指示了一个步调错误, 好比在方法须要正数的情况下转达了一个负数错误.不要利用 assert 语句来验证公共API的参数值. assert 是用来包管内部正确性的,而不是用来逼迫改正参数利用.若须要利用非常来指示某些不测情况,不要用 assert,用 raise 语句,
- 模块或包应该界说自己的特定域的非常基类, 这个基类应该从内建的Exception类继续. 模块的非常基类后缀应该叫做 Error.
- 永久不要利用 except: 语句来捕捉全部非常, 也不要捕捉 Exception 大概 StandardError , 除非你计划重新触发该非常, 大概你已经在当火线程的最外层(记得照旧要打印一条错误消息). 在非常这方面, Python非常宽容, except: 真的会捕捉包罗Python语法错误在内的任何错误. 利用 except: 很轻易隐蔽真正的bug.
- 只管镌汰try/except块中的代码量. try块的体积越大, 期望之外的非常就越轻易被触发. 这种情况下, try/except块将隐蔽真正的错误.
- 利用finally子句来实行那些无论try块中有没有非常都应该被实行的代码. 这对于整理资源经常很有效, 比方关闭文件.
其他具体请看:GitHub - google/styleguide: Style guides for Google-originated open-source projects
综上,学校是学习编程底子创建认知的地方,很难把所学用到工程开辟里。而工作是教会你怎么用编程创造有代价的产物,这其中有太多东西须要你去学习、运用、深化。 |