Commit a0641900 authored by jackfrued's avatar jackfrued

删除了不必要的资源文件更新了README.md

parent d8e11652
No preview for this file type
......@@ -39,7 +39,7 @@
![](./res/python-bj-salary.png)
![](./res/python-cd-salary.png)
![](./res/python-salary-chengdu.png)
给初学者的几个建议:
......@@ -444,15 +444,15 @@
> - **客户合作** 高于 合同谈判
> - **响应变化** 高于 遵循计划
![](./res/the-daily-scrum-in-the-sprint-cycle.png)
![](./res/agile-scrum-sprint-cycle.png)
> 角色:产品所有者(决定做什么,能对需求拍板的人)、团队负责人(解决各种问题,专注如何更好的工作,屏蔽外部对开发团队的影响)、开发团队(项目执行人员,具体指开发人员和测试人员)。
>
> 准备工作:商业案例和资金、合同、憧憬、初始产品需求、初始发布计划、入股、组建团队。
>
> 敏捷团队通常人数为8-10人。
>
> 工作量估算:将开发任务量化,包括原型、Logo设计、UI设计、前端开发等,尽量把每个工作分解到最小任务量,最小任务量标准为工作时间不能超过两天,然后估算总体项目时间。把每个任务都贴在白板上面,白板上分三部分:to do(待完成)、in progress(进行中)和done(已完成)。
> 角色:产品所有者(决定做什么,能对需求拍板的人)、团队负责人(解决各种问题,专注如何更好的工作,屏蔽外部对开发团队的影响)、开发团队(项目执行人员,具体指开发人员和测试人员)。
> 准备工作:商业案例和资金、合同、憧憬、初始产品需求、初始发布计划、入股、组建团队。
> 敏捷团队通常人数为8-10人。
> 工作量估算:将开发任务量化,包括原型、Logo设计、UI设计、前端开发等,尽量把每个工作分解到最小任务量,最小任务量标准为工作时间不能超过两天,然后估算总体项目时间。把每个任务都贴在白板上面,白板上分三部分:to do(待完成)、in progress(进行中)和done(已完成)。
2. 项目团队组建
......@@ -636,6 +636,4 @@
- 云存储
- CDN
> 致谢:感谢的我的同事古晔、张旭、肖世荣、王海飞、荣佳伟、路丰坤等在技术上给予的指导和帮助。
\ No newline at end of file
res/01.django_single_server.png

35.2 KB

res/02.django_dedicated_db_server.png

47.5 KB

res/03.django_dedicated_static_server.png

63.2 KB

res/04.django_load_balance.png

110 KB

res/05.django_massive_cluster.png

113 KB

res/Celery_RabitMQ.png

35.5 KB

res/Producer-Broker-Consumer-Arrangement.png

21.5 KB

res/abstraction-view.png

554 KB

res/algorithm_complexity_1.png

72.5 KB

res/algorithm_complexity_2.png

95.7 KB

res/alipay_web_developer.png

184 KB

res/aliyun-certificate.png

313 KB

res/aliyun-dnslist.png

195 KB

res/aliyun-domain.png

209 KB

res/aliyun-keeprecord.png

86.4 KB

res/aliyun-resolve-settings.png

140 KB

res/app_folder_arch.png

58.1 KB

res/builtin-middlewares.png

400 KB

res/celery.png

218 KB

res/celery_architecture.png

25.9 KB

res/class-and-object.png

436 KB

res/click-jacking.png

290 KB

res/concurrency.png

337 KB

res/deployment_pipelines.png

104 KB

res/django-middleware.png

253 KB

res/django-mtv.png

142 KB

res/django_request_response_cycle.png

158 KB

res/docker_logo.png

12.7 KB

res/docker_vs_vm.png

133 KB

res/encapsulation.png

139 KB

res/er-graph.png

147 KB

res/git_logo.png

189 KB

res/git_repository.png

179 KB

res/gitignore_io.png

85.9 KB

res/greedy.png

27.1 KB

res/http-request.png

5.95 KB

res/http-response.png

6.4 KB

res/jenkins_new_project.png

148 KB

res/modularity.png

322 KB

res/multi-inheritance.png

403 KB

res/mvc.png

296 KB

res/oauth2.png

81.6 KB

res/object-roles.png

378 KB

res/objects-collaborate.png

254 KB

res/objects-lifetime.png

333 KB

res/python-cd-salary.png

238 KB

res/python-salary-hangzhou.png

137 KB

res/python-salary-shanghai.png

143 KB

res/python-salary-shenzhen.png

142 KB

res/python-str-join.png

43.8 KB

res/python_salary_guangzhou.png

238 KB

res/redmine_new_issue.png

212 KB

res/selenium-ide.png

116 KB

res/selenium_ide.png

146 KB

res/shopping-pdm.png

439 KB

res/uml-graph.png

36.7 KB

res/uml.png

22.4 KB

res/web-application.png

174 KB

......@@ -15,7 +15,6 @@ else:
if c > the_max:
the_max = c
print('The max is:', the_max)
```
但是我们刚才说了,程序员都是懒惰的,很多程序员都会使用三元条件运算符来改写上面的代码。
......@@ -27,7 +26,6 @@ c = int(input('c = '))
the_max = a if a > b else b
the_max = c if c > the_max else the_max
print('The max is:', the_max)
```
需要说明的是,Python在2.5版本以前是没有上面代码第4行和第5行中使用的三元条件运算符的,究其原因是Guido van Rossum(Python之父)认为三元条件运算符并不能帮助 Python变得更加简洁,于是那些习惯了在C/C++或Java中使用三元条件运算符(在这些语言中,三元条件运算符也称为“Elvis运算符”,因为`?:`放在一起很像著名摇滚歌手猫王Elvis的大背头)的程序员试着用`and``or`运算符的短路特性来模拟出三元操作符,于是在那个年代,上面的代码是这样写的。
......@@ -39,7 +37,6 @@ c = int(input('c = '))
the_max = a > b and a or b
the_max = c > the_max and c or the_max
print('The max is:', the_max)
```
但是这种做法在某些场景下是不能成立的,且看下面的代码。
......@@ -60,7 +57,6 @@ a = int(input('a = '))
b = int(input('b = '))
c = int(input('c = '))
print('The max is:', (a if a > b else b) if (a if a > b else b) > c else c)
```
但是,这样做真的好吗?如此复杂的表达式是不是让代码变得晦涩了很多呢?我们发现,在实际开发中很多开发者都喜欢过度的使用某种语言的特性或语法糖,于是简单的多行代码变成了复杂的单行表达式,这样做真的好吗?这个问题我也不止一次的问过自己,现在我能给出的答案是下面的代码,使用辅助函数。
......@@ -74,7 +70,6 @@ a = int(input('a = '))
b = int(input('b = '))
c = int(input('c = '))
print('The max is:', the_max(the_max(a, b), c))
```
上面的代码中,我定义了一个辅助函数`the_max`用来找出参数传入的两个值中较大的那一个,于是下面的输出语句可以通过两次调用`the_max`函数来找出三个数中的最大值,现在代码的可读性是不是好了很多。用辅助函数来替代复杂的表达式真的是一个不错的选择,关键是比较大小的逻辑转移到这个辅助函数后不仅可以反复调用它,而且还可以进行级联操作。
......@@ -86,6 +81,5 @@ a = int(input('a = '))
b = int(input('b = '))
c = int(input('c = '))
print('The max is:', max(a, b, c))
```
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment