Skip to content

Commit 283ace9

Browse files
committed
bla bla
1 parent bcd196c commit 283ace9

File tree

3 files changed

+21
-11
lines changed

3 files changed

+21
-11
lines changed

base/basics.rst

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ python,ruby之类的语言优势在于其生产力,你能在极短时间内
5151

5252
Linux系统
5353
----------
54-
大部分Python应用都是跑在Linux服务器上的,大部分开源软件使用的也是linux系统,即使日常工作不使用linux,一些基本的linux命令也要了解。
54+
大部分Python应用都是跑在Linux服务器上的,大部分开源服务器软件使用的也是linux系统,即使日常工作不使用linux,一些基本的linux命令也要了解。
5555
比如常用的文件操作,目录操作,进程操作等。你可以使用类unix系统mac或者linux版本ubuntu作为学习环境。
5656
推荐:
5757

@@ -66,15 +66,19 @@ Linux系统
6666
----------
6767
现在用得比较多的有三种类型的数据库,关系型数据库(mysql等),文档型数据库(mongodb等),和内存型数据库(redis等)。三种数据库各有优势和特色,后端程序员需要了解下不同类型数据库的使用方法和应用场景,灵活应用到后端代码中。关于各种数据库网上已经有不少资料,读者可以自行搜索学习。
6868

69+
python相关库的使用
70+
-------------------
71+
python一大优势在于数量丰富的库,灵活使用各种python库能帮助我们快速做出产品。作为web开发者,你需要了解常用python库和框架的使用,比如django/flask/sqlalchemy/requests/pandas等。
6972

7073
版本控制
7174
----------
7275
目前最流行的应该就是git了。版本控制工具是多人协作必不可少的工具,入门的程序员需要掌握基本的git命令,可以把github作为个人练习的工具。
7376

7477

75-
专业性
78+
专业素养
7679
----------
7780
公司做项目不是自己过家家,需要你具备写文档,注释,单元测试的能力。如果你现在还不了解一个正规python项目都有哪些组建构成,请去github克隆一份知名的代码仓库,花点时间仔细分析下它的项目结构和源代码。
81+
比如主名网站reddit代码已经开源,大部分python实现,可以参考下。另外很多著名的python库,比如requests/flask等也可以作为参考。
7882

7983

8084
后端技术栈

codingstyle/codingstyle.rst

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
代码风格
88
--------------------------------------
9-
不一致的开发风格会给协作开发带来困难,同时也妨碍代码阅读,读代码的时间是多于写代码的,所以有必要统一编码规范。推荐使用pep8或者其子集作为代码规范,使用vim插件python-mode开启pep8和pylint对代码就行检测。如果使用其他编辑器或者IDE工具最好也使用相关插件使代码符合规范。工程上的代码应该尽可能保持清晰易懂,推荐看看requests等优秀的开源库学习下。强烈建议新手看看以下参考写出格式规范的代码,强烈建议打开pep8和pylint,pylint可以帮助你干掉很多低级错误。建议使用py的公司都指定好自己的代码规范并且严格遵守,同时做好code review,防止造成以后的维护噩梦。
9+
不一致的开发风格会给协作开发带来困难,同时也妨碍代码阅读,读代码的时间是多于写代码的,所以有必要统一编码规范。推荐使用pep8或者其子集作为代码规范,使用vim插件python-mode开启pep8和pylint对代码静态检测。如果使用其他编辑器或者IDE工具最好也使用相关插件使代码符合规范。工程上的代码应该尽可能保持清晰易懂,推荐看看requests等优秀的开源库学习下。强烈建议新手看看以下参考写出格式规范的代码,强烈建议打开pep8和pylint,pylint可以帮助你干掉很多低级错误。建议使用py的公司都指定好自己的代码规范并且严格遵守,同时做好code review,防止造成以后的维护噩梦。
1010

1111
* `《PEP8.org》 <http://pep8.org/>`_
1212
* `《PEP 8 -- Style Guide for Python Code》 <https://www.python.org/dev/peps/pep-0008/>`_
@@ -110,22 +110,24 @@ update: 经验表明,TDD未必是必要的,但是单元测试是很必要的
110110

111111
一些常见原则
112112
----------------------------
113-
对于什么是好代码,什么是坏代码我现在还没有太多经验,但是最近工作接手别人的代码感觉困难重重,还是too naive啊。每个人实力不同,风格不同,一起协作的时候确实会遇到很多问题和分歧。感觉code review啥的还是很有必要的,可以让菜鸟学习下老鸟的经验,也可以让老鸟指导下菜鸟的失误,同时避免过于个人化的糟糕风格(比如让人想立马离职的高达成百上千行的复杂函数,比如上来一堆不知道干啥的幻数,比如上来就 `form shit import *` 导致俺的编辑工具找不到定义,比如整个项目没有一行测试代码,比如不知道用logger,全用print+眼珠子瞅,一个bug找半天,比如没有pep8检测导致你的环境打开别人的代码彪了一堆警告......)。说好的规范呢,说好的设计模式呢,说好的高内聚低耦合呢?说好的KISS原则呢?说好的DYR原则呢?其实俺只是想多活几年,至少不要到三十岁头发掉光。啥设计模式的可以不用,能干活的代码就行,牢记几个原则,没事的时候对复杂的东西重构下,代码不能自解释的搞搞文档,不被队友坑同时不坑队友,俺就心满意足了。最后还是列举一下常用原则、思想和注意事项吧(最好import this看看python之禅,很多思想是通用的):
113+
对于什么是好代码,什么是坏代码我现在还没有太多经验,但是最近工作接手别人的代码感觉困难重重,还是too naive啊。每个人实力不同,风格不同,一起协作的时候确实会遇到很多问题和分歧。感觉code review啥的还是很有必要的,可以让菜鸟学习下老鸟的经验,也可以让老鸟指导下菜鸟的失误,同时避免过于个人化的糟糕风格(比如让人想立马离职的高达成百上千行的复杂函数,比如上来一堆不知道干啥的幻数,比如上来就 `form shit import *` 导致俺的编辑工具找不到定义,比如整个项目没有一行测试代码,比如不知道用logger,全用print+眼珠子瞅,一个bug找半天,比如没有pep8检测导致你的环境打开别人的代码彪了一堆警告......)。说好的规范呢,说好的设计模式呢,说好的高内聚低耦合呢?说好的KISS原则呢?说好的DYR原则呢?其实俺只是想多活几年,至少不要到三十岁头发掉光。啥设计模式的可以不用,能干活的代码就行,牢记几个原则,没事的时候对复杂的东西重构下,代码不能自解释的搞搞文档,不被队友坑同时不坑队友,俺就心满意足了 ,遇到坑队友就等着加班和折寿吧:(。最后还是列举一下常用原则、思想和注意事项吧(最好import this看看python之禅,很多思想是通用的):
114114

115115
* KISS原则,Keep It Simple, Stupid。能简单的绝对不要复杂,不要炫耀代码技巧,简单可读最重要,后人会感谢你的。
116116
* DRY原则。就算咱不懂设计模式,只要代码复杂重复了就及时抽取出来,至少不会碰到大问题。
117-
* YAGNI(You Aren't Gonna Need It),不要猜测性编码。
118-
* 快速失败,灵活使用断言。契约式编程(先验条件和后置条件)
117+
* YAGNI(You Aren't Gonna Need It),不要猜测性编码,不用的及时删除,估计以后也不太可能会用到
118+
* 快速失败,灵活使用断言。契约式编程(先验条件和后置条件),越早失败,越容易排查错误。
119119
* 及时清理技术债务,防止『破窗』。
120+
* 隐藏复杂性。如果复杂性避免不了,应该尽让内部复杂,接口要保持简单易用,而不要因为业务逻辑复杂就堆砌一堆shit.
120121
* 一次只做一件事。尽量避免复杂度过高的逻辑,尽量做到代码简单,意图明确。
121122
* 高内聚,低耦合。意义相近的东西应该放到同一个地方。写代码的时候想着怎么测试它就能避免过度复杂,耦合严重的代码。
122123
* 代码应当易于理解。 《代码大全》、《编写可读代码的艺术》、《代码整洁之道》啥的都是告诉你代码最好自解释,好理解。记住代码首先是给人看的,其次才是让机器执行的,不要过度设计。
123124
* 不要过早优化,最小可用原则。先测量,后优化。根据二八定律,大部分性能瓶颈只在20%的部分,这些才是真正需要优化的地方。
124-
* 不要炫技,可读性最重要。合适的地方使用合适的技巧,不要过度炫耀语法糖导致维护和理解困难。
125+
* 不要炫技,可读性最重要。合适的地方使用合适的技巧,不要过度炫耀语法糖导致维护和理解困难。大部分人不是造轮子的,你用不着太多奇淫技巧。
126+
* 不要重复发明轮子。遇到问题首选稳定可靠的解决方案。
125127
* Think about future, design with flexibility, but only implement for production. 尽量设计良好,避免繁杂和冗余。好的架构和设计都是不断演进的。
126128
* 文档化。哪些东西该文档化,哪些该注释需要做好,以便新手可以尽快上手。尽量做到代码即文档,tornado的文档和代码就是典范。
127129
* 不要直接吞掉任何错误和异常,一定要做好记录。血泪教训,使用Sentry或其他工具记录好异常发生的信息,为定位bug提供便利,web端的bug一般不好复现。
128-
* ......还有的大家可以自己补充
130+
* ......还有的大家可以自己补充。我建议新手可以看看《代码大全》或者《编程匠艺》之中的任何一本,带你快速入门。
129131

130132

131133
还有OOP那一套:
@@ -145,10 +147,10 @@ python代码坏味道(新手经常犯的错误)
145147
- 不pythonic,写得很业余,真就信了半天学会python
146148
- 上来就整一个不知道啥意思的magic number,大学老师没教你不要滥用幻数?
147149
- 上来就from shit import *
148-
- 复杂函数没有docstring,传入了一个嵌套字典都不注释,娘来
150+
- 复杂函数没有docstring,传入了一个嵌套字典都不注释,娘来。python没有类型声明真是维护代码的一个大坑。
149151
- 变量名乱起,看不出类型,加重理解负担。我在想是不是动态语言用匈牙利命名法要好一些
150152
- 不遵守pep8,没有pylint检测,打开代码一堆语法警告,老子的编辑器满眼都是warnning,编辑器用不好就老老实实用pycharm,用编辑器就老老实实装好语法检测和pylint检测插件,没有插件请考虑换一个editor
151-
- 没有单元测试,不知道怎么写测试(print大法好?)
153+
- 没有单元测试,不知道怎么写测试(print大法好?)。没有一点专业精神,或许和python大部分都是自学的业余选手有关。
152154
- 超长函数,没有复用和拆分,我智商低,不能理解好几屏都翻不完的,见谅。这么长居然还tm能工作,牛逼
153155
- 到处print,debug的时候加上,上线再删除(累不累亲?),logging模块很受冷落
154156
- 上来就try/except了,把异常都捕获了,吞掉异常导致排错困难
@@ -194,4 +196,4 @@ Code Review
194196
尽量写出对自己也对其他人负责的代码,上边费了牛劲都是在阐述这个显而易见但是没多少人严格遵守的东西。用动态语言写大型项目维护起来要稍麻烦,
195197
很多新手写代码不注重可维护性,甚至自己写的代码回头自己看都一脸懵逼,问了一句这代码TM是干啥的?
196198
一开始的负责会为以后协作和维护带来极大便利(当然你想干两天就走让其他人擦屁股就当我没说)。
197-
最后,很多东西我也在摸索,上面的玩意你就当小白的踩坑记录,随着理解和经验的加深我会不定期更新本篇内容。
199+
最后,很多东西我也在摸索,上面的玩意你就当小白的踩坑记录,随着理解和经验的加深我会不定期更新本篇内容。另外我发现网上大部分是教程性的东西,对于python相关的工程性的东西很少,我很疑惑难道大部分公司的python项目都写得相当规范?没人吐槽?反正我是踩过坑,希望看到过本章的人能把python代码质量重视起来。

memo/memo.rst

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -213,9 +213,13 @@ vim
213213
:set tabstop=2 " To match the sample file
214214
:set noexpandtab " Use tabs, not spaces
215215
:%retab! " Retabulate the whole file,替换tab为空格
216+
map <F4> :%retab! <CR> :w <CR> " 映射一个命令
216217
217218
"https://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&cad=rja&uact=8&ved=0ahUKEwjF6JzH8aTRAhXiqVQKHUQBDcIQFggcMAA&url=http%3A%2F%2Fstackoverflow.com%2Fquestions%2F71323%2Fhow-to-replace-a-character-by-a-newline-in-vim&usg=AFQjCNGer9onNl_RExCUdE75ctTvVx8WGA&sig2=WrcRh9RFNvN6bUZoHpJvDg
218219
"vim替换成换行符使用\r不是\n
220+
" 多行加上引号 http://stackoverflow.com/questions/9055998/vim-add-tag-to-multiple-lines-with-surround-vim"
221+
:1,3norm yss"
222+
219223
220224
用markdown文件制作html ppt
221225
-------------------------------------------------------------

0 commit comments

Comments
 (0)