开发心得记录

写这篇文章,纯粹记录,希望对您有所帮助

学习方法

带着问题,get点的系统学习

  1. 系统学习相比于碎片学习成本低,因为可以串成线,查漏补缺
  2. 适当总结和第二天总结是最有效的学习方式
  3. 联系对比的学习效率也很高效
  4. 带着问题看视频或者看文章,找自己不会的地方,看视频或者文章,get点比较重要,这是问题的症结所在
  5. 3W what how why:人家怎么解决的(get point),为什么我没想到,类似的问题以后自己能解决吗?触类旁通,举一反三
  6. 墨菲定律
  7. 一万小时定律

程序员的核心竞争力

程序员发展方向:用技术解决实际的产品问题

  1. 扎实的基础和开发能力,架构思维
  2. 业务理解能力,能将需求落地到代码
  3. 沟通能力
  4. 输出能力,文章或者让小白学会才算是掌握了
  5. 自律和管理

开发原则

高级语言的特性:泛型,面向接口,面相对象:动态,封装,继承
程序的关键特性富有变化,
具体表现:各个元素和元素的关系,逻辑关系
程序的哲学:抽象,变化,灵活

  1. 大问题平时要拆解成小问题;
    比如淘宝的商户入账信息,是一步一步写的,如果所有信息都一次性写完,用户体验不好,后台堆在一块不利于维护,也臃肿,所以这个问题的哲学本质是:大问题拆解成小问题,一步一步填写符合人们的正常逻辑和处理事情的逻辑,一步一步实现功能
  2. 类的功能要有区分度,集中管理,方便维护,类的设计要遵循单一职责,达到复用最好
    启发:其一,功能要拆分,大功能要拆分成小功能,一步一步实现,每个类都是一个单独的功能,这样有用到这个功能,都可以请求到这个方法(接口,函数)利于维护;其二,一次性把所有功能写到一块,没有灵活性,臃肿,不方便维护
    一方面:从功能上来说,功能要有区分度,每个函数维护一个公共能,用的时候相互调用,功能要单一,集中维护
    另一方面:从处理问题的方法方法上来说,功能写在一个地方,俗称一坨,用户体验不好,后台也很抓狂,就是不适配,这不是高效的处理方式,成本太高,维护成本更高,投入产出比低,所以功能在保持整体性的同时,要最小粒度的拆解,题外话:事物发展的规律是循序渐进的,工作是一步一步开展的,想改变人的印象也是一点一滴来的,学习要循序渐进的,处理问题也是一步一步拆解处理,量变引起质变
  3. 小到函数(对象的方法)达到系统都是相通的,对比看下都是怎么处理异常情况的,让程序具有健壮性
    共同点:都是有输入输出,都是一个功能,
    方法有异常可以catch住,系统间的交互超时异常可以catch住,正常的话,是以状态码的形式返回结果,或者异常以Boolean类型标识调用的成功与否
  4. 面向接口开发**;接口是对方法的进一步封装,让方法对外成为一种引用**
    实现implement某个功能,是对函数(方法的进一步封装),这样程序在写的时候更灵活,因为抽象,所以灵活,实际程序在运行的时候,根据有几个实现类和调用者找到对应的方法实现
  5. 配置类是一种特殊的implement方法;
    配置类是把一类配置选项,统一到一个文件,起到配置的功能,实现了灵活配置,这也是implement实现的一种方式,这个口留给了用户,让用户根据需要去配置
  6. Java语言提供封装的特性,可以调用一个简单的对外暴露的方法,实现类内部的处理逻辑,比如提供一个public static静态方法或者public method,体现了程序的灵活性
  7. 平时写代码需要注意单一职责,功能明确,简单易读(语言式编程),健壮性,抽象性,维护性,比如声明个常量,常量起名要简单,比如空格 Space,都是很好的写法
  8. 小结:
    好的程序设计是可扩展的,设计之初就是与人的交互是友好的,有输入有输出,内部的关系处理的很恰好得当,对外还可以灵活调整,调整的成本很小,这样可以使系统高效持续的运行,扩展的本领很强,具体到程序就是用最简单最有力的方式处理掉元素之间的关系(既独立又紧密),扩展往大的说就是架构:预测未来可能处理的问题和隐患
    程序本身的特征就是要提供灵活,这样用户可以定制化开发,跟数学原理类似,语言提供特性,具体到开发者可以灵活使用

怎么分类是个思考的问题,功能能分类,方法能按功能分类,类也能按功能分类
怎么组合和相互链接也是个思考的问题

  1. spring框架的哲学是方便了管理实例之间的关系,一般都是单例模式
  2. 设计模式—管理关系的范式,是让元素之间的关系独立,不强影响和强依赖,比如抽象类提供骨架,比如类提供的对外方法,方法内部在运行期间,类内部相互调用,这样对外的接口不用改动太多,实现了灵活性

有意思的case

计算机组成原理:输入,输出,计算(实时计算)
为了提高计算能力,需要把计算结果临时存储,有了内存的概念,然后有了临时存储和文件存储
一开始的程序配置文件为啥是XML,估计是树形结构,方便按着层次读取数据,这里定义了一种层次逻辑来解决问题,对计算机友好,但对程序员就有点啰嗦和容易出错,而后有了yaml文件
国际化语言是需要配置映射关系的,这个必须是用户自己配置的,必须需要配置才行,这个口留给用户,每个用户可用根据自己的需要配置,相当于输入的数据源,处理角色就留给了写的程序,程序相当于一个加工器,相当于一个模子,类似于功的原理,同样不在数据库排序就在程序中排序,Map是一种映射关系,是两个元素之间的关系,多个元素之间的关系是类的多个成员,Map是封装的好处,是在数组的基础上进行的封装
在使用Map的使用不能声明类就能使得两个元素建立关系,多个元素建立关系就需要声明一个类包住,使得多个元素作为一个整体,持有一个对象就能管理多个元素,通过函数方法操作元素,当然,可以同时操作多个元素,这个问题就转变为创建对象,然后进行具体调用的方式给解决了,大问题转变为一个个小问题,具有了灵活性,整体又是一个对象提供给调用者,很好了平衡了开发与维护,具体是容器包裹多个小关系,持有容器就能操作容器的元素,从多个元素之间的关系转变为函数,体现这个关系的函数式子就是实例对象和其中的元素和方法,方法体现元素之间的关系,从元素的多个关系转化为一个整体,包装为一个整体,多个关系不利于维护,犬牙交错,那就转变为一个统一到一个地方,然后再去调用

总结

写文章是提交文笔水平和锻炼逻辑比较好的方式
多想想:怎么用最简单的话要问题说清楚,并且富有幽默(道出本质)
多思考:计算机哲学

  1. 功能要有区分度
  2. 大问题要拆解成小问题,大道至简
  3. 程序富有变化,抽象是自带特性,提供了灵活的基础
  4. 平时要系统学习
  5. 带着问题看文章或者视频
  6. 语言的高级特性:封装,多态,泛型,这3个特性赋予了灵魂
  7. 程序要简洁,易读,可扩展,多思考计算机哲学
  8. 技术是基础,业务理解能力和解决问题能力是立身之本,沟通协助能力是关键
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值