Title Date Modified Category
design 2019-11-23 12:00 2019-11-25 12:00 design

1. 关于设计模式的探讨(演讲稿)

1.1. 关于架构演进的探讨

1.1.1. 演示

https://github.com/mingz2013/demo-project-layout

1.1.2. 说了什么

  • 代码结构不可能不变,重构是必然的。
  • 很多同学写的代码很长,原因是不会拆分,或者没有拆分的意识。函数长,模块长,都是一个道理。
  • 架构要进可攻退可守。进,通过微小的更改,即可适应架构的演进。退,保持现有功能的满足。以此保证设计的恰到好处。
  • 设计,要同时保证优雅,效率,性能。
  • 没有经过推演的代码,就是没有思考过的代码。
  • 吃过见过。知道最终的模样,才知道开始怎么做。
  • 拆字决,架构设计的屠龙宝刀。

关注数据流

数据源,配置
数据源,数据库
跟踪数据流,数据从接口流入,逻辑从不同数据源读取信息,经过计算。改变数据库的数据,最终返回数据。就这么简单。

1.2. 疑问

  • 为什么使用设计模式?
  • 设计模式是必须的吗?
  • 我之前也没记住几个设计模式,但是也没有影响写出好的代码,我依据的是什么?
  • 不依赖于面向对象的设计模式怎么用?
  • 什么是设计模式?
  • 为什么需要设计模式?
  • 设计模式带来什么?
  • 如何使用设计模式?
  • 从上一个问题想到,为什么需要面向对象?
  • 什么是面向对象?
  • 面向对象是必须的吗?
  • 面向对象带来什么?
  • 如何使用面向对象?

1.3. 为什么自己会想到上面问题?

1.3.1. 我之前对于设计模式的了解

  • 从旁边的同事整天抱着《head first设计模式》开始。
  • 学java的时候,从教学视频里面学过设计模式。
  • 自己读过《head first设计模式》,用java写过设计模式,画过设计模式的类图。
  • 时间久了,后来没记住几个。

1.3.2. 已经很久没有思考过编程思想了

我已经很久没有去认真思考,或者看过关于编程思想的一些书了

还有,我本身对于C++,Java是比较排斥的,我喜欢的语言有python,Go,C。
其实最近对于Python的动态性也有很多的讨厌了。python在写大型项目的时候不好把控。

一看到各种接口,各种实现等,就会感觉到复杂。尤其是在python中出现。
可能,问题本身比较复杂,实现可能是没问题的。

有些人写各种语言的风格都是一样,从来不考虑各种语言的差别。

人本身是不善于处理复杂的事物的。

1.4. 思想的辩证

首先,设计模式,面向对象等都是要解决关于怎么设计的问题。

设计的一种思想。

思想上的东西,一定都是要辩证的。

当自己无法想清楚这件事的时候,就要读一些经典的书,
不同类别的书,甚至于不同思想的书,如经典的软件设计流程,和敏捷开发,极限编程等。

辩证的东西,都是有两方面的,没有分歧的思想,不经过辩证的思想是不成熟的。

经过辩证的思想,才能为我所用。

1.5. 从书中寻找答案

  • 《人月神话》
  • 《软件工程》第9版
  • 《系统架构师》第2版
  • 《软件框架设计的艺术》
  • 《软件工程:面向对象和传统的方法(原书第8版)》
  • 《软件建模与设计:UML、用例、模式和软件体系结构》
  • 《面向对象葵花宝典:思想、技巧与实践》
  • 《Java编程思想(第4版)》

  • 《敏捷软件开发 原则,模式与实战》

  • 《代码整洁之道》

  • 《设计模式:可复用面向对象软件的基础》

  • 《软件设计精要与模式》第2版

  • 《大话设计模式》

  • 《head first设计模式》

  • 《Python编程实战 运用设计模式、并发和程序库创建高质量程序》

  • 《精通Python设计模式》

  • 《JavaScript设计模式》

  • 《C现代编程》

1.6. 从书中了解到的东西

我自己平时是怎么写代码的一些思考

看了一堆书,最后看到自己怀疑人生,我到底会不会用面向对象??

1.6.1. 一些名词

  • 面相过程,
  • 面向对象,
  • 函数式编程。
  • 计划的设计,
  • 演进的设计。
  • 封装,
  • 继承,
  • 多态。
  • 五大原则
  • GoF 23个设计模式。
  • 敏捷开发,
  • 极限编程。
  • 测试驱动开发。
  • 结对编程。
  • 重构。
  • 接口,
  • 抽象,
  • 组合,

1.6.2. 正文

我们讨论的是什么?
终究讨论的还是程序设计

http://mingz.me/note/design/

1.7. Q&A

个人见解,欢迎讨论。

results matching ""

    No results matching ""