程序=数据结构+算法
〇、为什么?用心写程序
借用别人的一句话:多用心写一些代码,被bug折磨到引以为乐估计你就明白了
这里的关键是用心,如果不用心,你永远无法体会到那种无力感,你千方百计的好好实现这个程序,但是写出来的程序即难读、又难维护、性能又差。
就像你和一个系统学习过下棋并背过棋谱的人下棋,你千方百计的想好好赢一局,但是你一直输。如果你用心下过,遇到过这种情况你就可以理解。
你多次重构依旧无法令自己满意,你的最终目的就是开发出一个好程序。
一、数据结构和算法
有人说:
算法是程序的灵魂。
那么我觉得
数据结构是程序的肉体。
就像修仙小说中的逻辑,
强大的肉身可以滋养灵魂,强大的灵魂也可以反补肉身。二者相辅相成。
那么我觉得
好的数据结构可以简化算法,好的算法可以迁就数据结构。二者也相辅相成。
二、面向对象和面向过程
面向过程就是倾向于算法,面向对象倾向于数据结构。
当你选择的对象比较好时,你的程序实现步骤可能会简单很多。
有人说用面向过程的方法写出来的程序是一份蛋炒饭,而用面向对象写出来的程序是一份盖浇饭。
盖浇饭的好处就是”菜”“饭”分离,从而提高了制作盖浇饭的灵活性。饭不满意就换饭,菜不满意换菜。
对于面向对象来说,对象选择的不好就换对象,步骤实现的不好就换步骤。
蛋炒饭将“蛋”“饭”搅和在一起,想换“蛋”、“饭”中任何一种都很困难,以至于“可维护性”比较差。
对于面向过程来说,程序实现的不好,只能推到重来,从零开始重构。
三、好程序和好程序员
有人认为好的程序:
1、满足业务需求
2、条理清晰,可读性强
3,性能好
4、可维护性好
5、可扩展性好,耦合程度低
我认为好的程序员写的程序:
1、当然先决条件是满足需求⭐
2、条理清晰、符合通用代码规范⭐
3、别人轻易能读懂⭐
4、自己几年后依旧能读懂⭐⭐⭐
当你比较擅长算法和数据结构时,大部分框架,大部分程序你只要了解实现机制用心使用一段时间就可以快速熟悉。
这种感觉就像一剑破万法,就像剑修一样,只有一把剑,只依靠手中这把剑,一剑在手万法皆破。
也像一剑生万法,一剑在手万法皆生。
好了就废话到这里,再说就成玄学了,道生一、ॐमणिपद्मेहूँ。。。
在我心中这把剑就是算法和数据结构,程序=算法*数据结构。
这里使用乘号是因为他们对程序的影响都是成正比的。