宏观和微观的结合---不可取代的专业能力系列(一)
2016-07-29 09:59
295 查看
最开始学着写代码的人有以下特征:(说谁谁知道?你懂的,不要迷恋哥...)
(1)先写容易实现的
先做容易出成果的工作,急功近利。经常是刚听懂需求,立马就开始动手。哼哼,主要是想在领导面前好好的表现一下自己。
急功近利、浮躁的心态。罗马不是一天建成的。
(2)想到哪写到哪
挨个实现功能。有时候就了解个大概功能。骑驴看唱本,走着瞧
没有根据功能的轻重缓急、流程顺序实现功能。
(3)不重视那些复杂一点的功能
碰到复杂一点的功能,经常由着以前的思维惯性,走着瞧,都没有细想到底能不能实现。
复杂的功能竟然不做一下概要设计。
(4)大量的拷贝代码,实现近似的功能。
传说中的复制、粘贴代码,一大堆几乎相同逻辑的方法遍布整个项目。
实现功能时,很多几乎相同的功能,总是一遍一遍写,稍微有点不一样也照样再写一次。
代码可重用性低。
(5)程序内写死了很多的东西。没想过以参数的形式实现。
代码灵活性差
(6)程序运行速度如乌龟爬,再强的CPU也经不住你那拙劣的代码
代码运行效率极其低下
以上种种问题,归根结底,都是对宏观和微观的不了解所造成的。后边我弄个一系列的篇幅来好好分析一下以上这几个问题。
以下内容是总纲:
重要的是思考方式。既要有宏观的概念、大局观,也要有细节的极致追求,这两种思维方式需要结合起来,缺一不可。
缺宏观:代码越来越复杂,难题越来越多,脑袋跟不上趟。牛逼的人,总是将复杂的问题简单化,如何简单化,就靠宏观的分析,比如抽象化、模块化,忽略大量的实现细节,这里面有很多大道,建立模型、分析模型,对数学要求比较高。譬如很多算法的实现。第一步:你要学会做映射,将实际的问题映射成一个恰当的、抽象的、易理解的模型,这个最切近问题的模型非常重要,就相当于找到问题的根源,都说找到问题,问题就已经解决了一半。第二步:你要想一个办法去解决它,切记不要用复杂的方法,尽量用简单的方法去解决。
缺微观:代码框架的设计讨论了很久,花了太长时间,结果这一堆的设计想象还在纸面上,竟然没有经过实践的检验,哪怕一次也行啊......
很多大师级人物就提出了一个概念,叫做可行走骨架!
宏观方面:你要搭建一个系统的骨架。
微观方面:你要让这个骨架动起来,能够行走。
编程的规矩千千万,万变不离其宗,总纲就是以上内容,这是我所理解的总纲,希望不要误导你,有想法请留言。
恩,先说到这里吧,咱们下篇探讨探讨,如何做好宏观方面的架构设计。
(1)先写容易实现的
先做容易出成果的工作,急功近利。经常是刚听懂需求,立马就开始动手。哼哼,主要是想在领导面前好好的表现一下自己。
急功近利、浮躁的心态。罗马不是一天建成的。
(2)想到哪写到哪
挨个实现功能。有时候就了解个大概功能。骑驴看唱本,走着瞧
没有根据功能的轻重缓急、流程顺序实现功能。
(3)不重视那些复杂一点的功能
碰到复杂一点的功能,经常由着以前的思维惯性,走着瞧,都没有细想到底能不能实现。
复杂的功能竟然不做一下概要设计。
(4)大量的拷贝代码,实现近似的功能。
传说中的复制、粘贴代码,一大堆几乎相同逻辑的方法遍布整个项目。
实现功能时,很多几乎相同的功能,总是一遍一遍写,稍微有点不一样也照样再写一次。
代码可重用性低。
(5)程序内写死了很多的东西。没想过以参数的形式实现。
代码灵活性差
(6)程序运行速度如乌龟爬,再强的CPU也经不住你那拙劣的代码
代码运行效率极其低下
以上种种问题,归根结底,都是对宏观和微观的不了解所造成的。后边我弄个一系列的篇幅来好好分析一下以上这几个问题。
以下内容是总纲:
重要的是思考方式。既要有宏观的概念、大局观,也要有细节的极致追求,这两种思维方式需要结合起来,缺一不可。
缺宏观:代码越来越复杂,难题越来越多,脑袋跟不上趟。牛逼的人,总是将复杂的问题简单化,如何简单化,就靠宏观的分析,比如抽象化、模块化,忽略大量的实现细节,这里面有很多大道,建立模型、分析模型,对数学要求比较高。譬如很多算法的实现。第一步:你要学会做映射,将实际的问题映射成一个恰当的、抽象的、易理解的模型,这个最切近问题的模型非常重要,就相当于找到问题的根源,都说找到问题,问题就已经解决了一半。第二步:你要想一个办法去解决它,切记不要用复杂的方法,尽量用简单的方法去解决。
缺微观:代码框架的设计讨论了很久,花了太长时间,结果这一堆的设计想象还在纸面上,竟然没有经过实践的检验,哪怕一次也行啊......
很多大师级人物就提出了一个概念,叫做可行走骨架!
宏观方面:你要搭建一个系统的骨架。
微观方面:你要让这个骨架动起来,能够行走。
编程的规矩千千万,万变不离其宗,总纲就是以上内容,这是我所理解的总纲,希望不要误导你,有想法请留言。
恩,先说到这里吧,咱们下篇探讨探讨,如何做好宏观方面的架构设计。
相关文章推荐
- 恰如其分的软件架构---不可取代的专业能力系列(二)
- 软件架构为何重要?---不可取代的专业能力系列(三)
- 转:TOP10 十大专业IT管理人才必备能力(1)
- 使用 Microsoft .NET 的企业解决方案模式-----不可不看的系列
- 不可不看!真正专业显卡技术分析评测
- 深入Atlas系列:探究序列化与反序列化能力(上) - 客户端支持,JavaScriptTypeResolver与JavaScriptConverter
- 打造自己的专业图像工具-Visual C++ 2005图像编程系列【二】
- 打造自己的专业图像工具-Visual C++ 2005图像编程系列【一】
- 打造自己的专业图像工具-Visual C++ 2005图像编程系列【五】(上)
- 打造自己的专业图像工具-Visual C++ 2005图像编程系列
- 打造自己的专业图像工具-Visual C++ 2005图像编程系列【三】
- SpringMVC学习系列-后记 结合SpringMVC和Hibernate-validator,根据后台验证规则自动生成前台的js验证代码
- ThinkPad R400 系列全新安装Win7专业版的详细过程
- 没有谁是不可取代的
- 初学者,平均值,用户数,高峰,能力 性能测试,压力测试、专业术语
- Spring整理系列(10)——@Autowired自动装配、结合@Qualifier过滤及与JSR-250@Resource注解、JSR-330@Inject注解的区别、@Named使用
- git版本控制管理系列-----第十八章 结合SVN 版本库使用Git
- 如何提高专业英文阅读能力
- 打造自己的专业图像工具-Visual C++ 2005图像编程系列【一】
- ELK系列-logstash跟logback结合