如何学习设计

简介:

从GOF的”Design Pattern”中的观点,可以看到模式的有两个要素:

1.反复出现的问题;
2.针对该问题的解决方案。

所以从这里看出学习设计模式,首先是积累问题,对问题进行归纳,分类,对比。其次是积累对问题的解决方案。
然而大部分人初学者都缺乏经验,学习设计模式是一个很好的思路。在看书的时候,在看书时,我觉得不是死记概念,而是可以不停地问自己这些问题:

  1. 这个模式是针对什么问题提出的?
  2. 为什么要这么做,而不那么做?
  3. 这样做有什么优势和劣势?
  4. 和其他类似的模式区别在哪里?

在自己设计的时候,也这样问自己:

  1. 我碰到什么问题,问题的本质与核心是什么?
  2. 我可以用哪些方案解决问题?
  3. 为什么用这些方案?各自有什么优劣势?
  4. 最终选择哪个方案比较好?

其实这是用批判性思维做设计,我觉得这样可以相对比较深入全面的了解问题,审视自己的设计。做到有理有据,心中有谱,和别人讨论时也能够给别人带去假设性的思想。同时在这个过程中,也加深自己对设计的理解。
我不太提倡死板套用设计模式,任何模式都是用来解决特定问题的,如果被套住,就无法深入了解其中的思想,也就不能真正做好设计,不能在已有设计上做提高。
同时我也不认同不用看设计模式,只要遵守设计原则就好了。我觉得看设计模式是一个很好的学习机会,是前人的总结,不能浪费。
另外看到一篇讲如何设计API的文章,觉得挺好,贴出来分享:An API Design Process
他主要讲了API设计的流程和一些注意点。但是其中我觉得他讲到一点给我挺大启发。他说设计API最重要的首先自己要清楚为什么要设计这个API,有明确的意识,是良好设计的前提。其次是设计过程中会碰到一系列决定,要做出明智的决定,当做出的决定都是明智的,这个API就坏不到哪里去。而做出明智的决定,你得先做过不好的决定,从中吸取教训,能以辨别好坏。
这一点给我的鼓励是让我可以正面自己做过的糟糕决定,明白这也是学习的宝贵机会。不光是自己的,看到别人做的糟糕的设计,也是宝贵的学习机会,要去想为什么他的设计会失败?从中就可以吸取教训。

目录
相关文章
|
存储 算法 搜索推荐
一文探究系统分析与设计的逻辑性
「软件分析」与「软件设计」这样的词眼经常听到,然而要真正理解「软件分析」和「软件设计」的本质是比较难的,本文带你了解软件分析与设计的「逻辑性」到底是什么。
1030 24
|
2月前
|
测试技术
谈谈【软件测试的基础知识,基础模型】
谈谈【软件测试的基础知识,基础模型】
28 5
|
7月前
|
敏捷开发 监控 架构师
【领域驱动设计专题】一文带领你透视DDD领域驱动模型的本质和设计原理分析指南(构建领域知识)
【领域驱动设计专题】一文带领你透视DDD领域驱动模型的本质和设计原理分析指南(构建领域知识)
191 0
|
设计模式 程序员 开发者
重构·改善既有代码的设计.01之入门基础
近期在看Martin Fowler著作的《重构.改善既有代码的设计》这本书,这是一本经典著作。书本封面誉为软件开发的不朽经典。书中从一个简单的案例揭示了重构的过程以及最佳实践。同时给出了重构原则,何时重构,以及重构的手法。用来改善既有代码的设计,提升软件的可维护性。
638 1
重构·改善既有代码的设计.01之入门基础
|
开发者
软件工程高效学 | 实战案例:利用Kitten设计交互案例
软件工程是计算机领域的一门专业基础课,它对于培养开发者的软件素质、提高开发者的软件开发能力与软件项目管理能力具有重要意义。本篇介绍了利用Kitten设计交互案例。
177 0
软件工程高效学 | 实战案例:利用Kitten设计交互案例
|
测试技术 数据库 开发者
【总结】 软件工程过程及模型概括
【总结】 软件工程过程及模型概括
【总结】 软件工程过程及模型概括
|
存储 NoSQL Java
设计的改进|学习笔记
快速学习设计的改进
|
缓存 Java 数据库
详细设计-设计讨论|学习笔记
快速学习详细设计-设计讨论
116 0
|
开发工具
软件设计体系 实验一 经典软件体系结构风格
软件设计体系 实验一 经典软件体系结构风格
软件设计与体系结构 实验二 经典软件体系结构风格(二)
软件设计与体系结构 实验二 经典软件体系结构风格(二)