当然要想成为高级工程师或许架构师,光看书是不行的,书本上来的东西都是东西型编程的体现,何为东西型编程呢?

便是说能够依据书本、网络等途径就能完结的编程便是东西型编程,那怎样处理呢?

为什么要进步编程思维

这个问题我想我们都有答案,编程思维便是一个程序员的魂灵,没有魂灵的程序员,只配ctrl + C/V.

专业一点来讲,进步编程思维的重要性在于它能够协助开发者更好地处理问题、进步功率、削减错误,并进步代码的可读性、可保护性和可扩展性,而这些点位便是成为一个高级Android工程师或许架构师必不可少的技能,也是每一个程序员应该具有的技能。在国外,许多面试更垂青的是学习才干和编程思维,其实也是,一个10年的经历丰富的程序员学习一门新的语言或许技能好像探囊取物,关于一个公司、一个团队、一个事务本钱来讲,有这样一个人是最经济的。更详细来讲:

  1. 处理问题才干:良好的编程思维能够协助开发者更好地了解问题,规划出高效、牢靠、可扩展的处理方案。
  2. 代码质量进步:优异的编程思维能够协助开发者写出易于阅览、易于保护的代码,并使其愈加强健、牢靠、可测验。
  3. 作业功率进步:合理的编程思维能够使开发者愈加高效地编写代码,并降低代码调试和修正的时刻。
  4. 技能实力进步:良好的编程思维能够使开发者愈加深化地了解编程语言和计算机科学原理,并在实践中把握更多的技能和技巧。
  5. 职业开展:具有良好编程思维的开发者在技能水平和职业开展方面具有更好的竞争力和远景。

良好的编程思维能够协助开发者更好地处理问题、进步功率、进步代码质量和可保护性,并在职业开展中具有更好的远景和竞争力,这也就成了了中、高、架构等分级程序员的差异之分。

怎样进步自己的编程思维

  1. 操练算法和数据结构:了解算法和数据结构能够协助你更好地了解和处理问题,优化你的代码并进步你的代码质量。
  2. 阅览源代码:阅览其他优异项目的源代码能够协助你学习其他开发人员的编程思维,了解他们是怎样处理问题的,从而进步自己的编程思维。
  3. 学习规划形式:规划形式是一种常用的编程思维,它能够协助你更好地安排你的代码,进步代码的可保护性和可扩展性。
  4. 参与开源项目:参与开源项目能够协助你学习其他开发人员的编程思维,了解他们是怎样处理问题的,一起也能够协助你获取更多的开发经历和知识。
  5. 持续学习:跟上Android开发的最新技能和趋势能够让你更好地了解开发环境和市场需求,并进步自己的编程思维。
  6. 常常review自己的代码:常常review自己的代码能够协助你发现自己代码中的问题并及时改善,一起也能够协助你学习其他开发人员的编程思维。

接下来,我们对这些步骤的项目进行剖析和说明,

操练算法和数据结构

了解算法和数据结构能够协助你更好地了解和处理问题,优化你的代码并进步你的代码质量, Android 这种移动渠道,功用要求是十分高的,可是他的机型许多,体系纷歧,所以我们应该从编程视点就削减不必要的费事。怎样操练呢?

  1. 挑选适宜自己的算法操练渠道:例如LeetCode、HackerRank、Codeforces等。这些渠道都供给了许多的算法题目,能够协助你进步算法水平。
  2. 学习根底算法:如排序、查找、树、图等算法,这些算法是其他算法的根底,把握好根底算法关于进步算法才干十分有协助。
  3. 操练算法的详细类型:例如贪心算法、动态规划、分治算法等,这些算法在实践开发中十分常见,把握好这些算法能够让你更好地处理实践问题。
  4. 测验完成算法:经过手写完成一些经典算法,你能够更好地了解算法的思维和完成方式,并加深对算法的了解。
  5. 参与算法竞赛:参与算法竞赛能够协助你进步算法才干,一起也能够认识到其他优异的算法工程师。

许多人在开发过程中公司是不会要求有算法参与的,特别是在Android端,也很少有人在开发中精心规划一款算法用于Android事务,Android的数据量级都在可控范围内,可是优异的程序员不是应公司要求而编程的,我们因该在面临数据的时候,自然而然的想到算法,想到时刻杂乱度、空间杂乱度的问题算法-时刻杂乱度 这是之前我在公司分享过的一篇文章,我们能够参阅一下,根本涵盖了时刻杂乱度及在不同场景中的计算方式以及在特殊场景下的计算概念。

举几个比方,怎样将算法运用到平时的开发中呢?

  1. 优化算法杂乱度:在实践开发中,我们常常需求处理许多数据,假如算法杂乱度高,就简略导致程序运转缓慢。因此,优化算法杂乱度是十分重要的。比方,在ListView或RecyclerView中运用二分查找算法能够快速查找到指定位置的数据。
  2. 运用动态规划算法:动态规划算法能够用于处理一些经典问题,例如最长公共子序列、背包问题等。在实践开发中,我们也能够运用动态规划算法处理一些问题,例如途径规划、字符串匹配等。
  3. 运用贪心算法:贪心算法是一种能够获得近似最优解的算法,能够用于一些优化问题。在Android开发中,例如布局优化、图片紧缩等方面,也能够运用贪心算法来抵达优化的作用。
  4. 运用其他常用算法:除了上述算法外,其他常用算法也能够运用于Android开发中,例如图画处理算法、机器学习算法等。关于一些比较杂乱的问题,我们也能够引入其他算法来处理。

横竖便是学之前要了解对应算法的大致用处,在类似场景中,直接测验搬套,先在伪代码中演算其成果,成果正趋向时果断运用。

阅览源码

阅览其他优异项目的源代码能够协助你学习其他开发人员的编程思维,了解他们是怎样处理问题的,从而进步自己的编程思维

前边不是说了,东西型编程能够不必看吗,是的,可是阅览源码不是检查东西,而是进步你的编程思维,学习思维是人类进化的最主要体现之一,多个思维的磕碰也能造就更成功的事情。那怎样阅览源码呢?这个每个人都有自己的办法,阅览后要善于变通,运用到自己的项目中,我是这么做的。

  1. 挑选适宜的开源项目:挑选一个适宜的开源项目十分重要。你能够挑选一些知名度比较高的项目,例如Retrofit、OkHttp、Glide等,这些项目一般质量比较高,也有必定的文档和教程。
  2. 确认方针和问题:在阅览源码前,你需求明晰自己的方针和问题。例如,你想了解某个库的完成原理,或许你想处理一个详细的问题。
  3. 仔细阅览源码:在阅览源码时,需求仔细阅览每一个类、办法、变量的注释,了解每一个细节。一起也需求了解项目的全体结构和运转流程。
  4. 了解技能布景和思路:在阅览源码时,你需求了解作者的技能布景和思路,了解为什么挑选了某种完成方式,这样能够更好地了解代码。
  5. 实践运用:经过阅览源码,你能够学到许多好的编程思维和技巧,你需求将这些思维和技巧运用到自己的开发中,而且测验立异,将这些思维和技巧进一步发扬光大。

阅览源码需求持之以恒,需求不断地实践和考虑,才干真实学习到别人的编程思维,并将其运用到自己的开发中。

学习规划形式

规划形式本便是编程思维的总结,是前辈们的经历制作的利刃,它能够协助你更好地安排你的代码,进步代码的可保护性和可扩展性。

  1. 学习规划形式的根本概念:学习规划形式前,需求了解面向方针编程的根本概念,例如承继、多态、接口等。一起也需求把握一些根本的规划准则,例如单一责任准则、开闭准则等。
  2. 学习规划形式的分类和运用场景:学习规划形式时,需求了解每个规划形式的分类和运用场景,例如创立型形式、结构型形式、行为型形式等。你需求了解每个形式的特点,以及何时应该挑选运用它们。
  3. 操练规划形式的完成:操练完成规划形式是学习规划形式的要害。你能够运用一些比方,例如写一个简略的计算器、写一个文件读写程序等,经过操练来加深对规划形式的了解。
  4. 将规划形式运用到实践项目中:将规划形式运用到实践项目中是学习规划形式的最终方针。你需求从项目需求出发,结合实践场景挑选适宜的规划形式。举例来说,下面是一些在Android开发中常用的规划形式:
    • 单例形式:用于创立大局唯一的实例方针,例如Application类和数据库操作类等。
    • 适配器形式:用于将一个类的接口转换成客户端期望的另一个接口,例如ListView的Adapter。
    • 工厂形式:用于创立方针,例如Glide中的RequestManager和RequestBuilder等。
    • 观察者形式:用于完成事情机制,例如Android中的播送机制、LiveData等。

学习规划形式需求不断操练和考虑,经过不断地操练和实践,才干真实将规划形式灵活运用到自己的项目中。

参与开源或许测验商业SDK开发

参与开源,许多同学是没有时刻的,而且国内缺少许多开发团队项目,都是以公司或许团队形式开源的,个人想在直接参与比较困难,所以有条件的同学能够参与商业SDK的开发,
商业SDK比较特殊的点在于受众不同,可是他所涉及的编程思维较为杂乱,会涉及到许多规划形式和架构形式。

比方,Android商业SDK开发涉及到许多方面,下面列举一些常见的考虑点以及常常运用的架构和规划形式:

  1. 安全性:SDK需求考虑用户隐私保护和数据安全,确保不会泄露灵敏信息。
  2. 安稳性:SDK需求确保在不同的环境下运转安稳,不会由于异常状况而崩溃。
  3. 可扩展性:SDK需求考虑未来的扩展和晋级,能够方便地添加新的功用和支撑更多的设备和体系版本。
  4. 功用:SDK需求确保在各种设备和网络条件下,响应速度和功用都有满意的体现。
  5. 兼容性:SDK需求考虑在不同版本的Android体系和各种厂商的设备上,都能够正常运转。

常常用到的架构和规划形式包含:

  1. MVVM架构:MVVM是Model-View-ViewModel的简称,经过将视图、模型和视图模型分离,能够完成更好的代码安排和更简略的测验。
  2. 单例形式:单例形式是一种创立大局唯一方针的形式,在SDK中常用于创立大局的配置、办理器等。
  3. 工厂形式:工厂形式是一种创立方针的形式,SDK中常用于创立和办理杂乱的方针。
  4. 观察者形式:观察者形式是一种事情机制,SDK中常用于通知运用程序有新的数据或事情抵达。
  5. 适配器形式:适配器形式用于将一个接口转换成另一个接口,SDK中常用于将SDK供给的接口适配成运用程序需求的接口。
  6. 策略形式:策略形式是一种动态地改变方针的行为的形式,SDK中常用于在运转时挑选不同的算法完成。

Android商业SDK开发需求综合考虑多个方面,挑选适宜的架构和规划形式能够进步代码质量、开发功率和保护性。

了解市场、了解事务,不要埋头敲代码

把握最新的市场需求,比方网络结构的开展历程,从开端的HttpURLConnection的自己封装运用,到okhttp,再到retrofit, 再后来的结构协程、Flow等等,其实中心没有变化便是网络请求,可是,从高内聚到,逐层解耦,变的是其编程的思维。

CodeReview

能够参阅该文章,此文章描述了CodeReview 的流程和办法,值得学习,CodeReview 是一个天然的进步自己事务需求的过程,
zhuanlan.zhihu.com/p/604492247

常常写开发文档

规划和编写开发文档是一个很重要的作业,它不仅能够进步自己的编程思维,也能够协助团队进步协作功率和削减沟通本钱.

假如要求你在开发一个需求前对着墙或许对着人讲一遍开发思路,你或许讲不出来,也不好意思,且没有留存,开发文档能够满意你,当你写开发文档时,你记录了你的对整个需求的开发,以及你编程的功底,日益累积后,你的思维自然会水涨船高,由于你写开发文档的过程便是在锻炼自己,比方我在前公司开发国际化适配时写的文档(当然只是我的粗俗想法国际化ICU4J 适配及SDK规划,我会先剖析问题,为什么?然后规划,而且会考虑或许遇到的问题,也一并处理了。时刻长了,规划形式、思维也会得到进步。

当然,也要分场景去规划,按需求去规划,能够采纳以下主张:
规划和编写开发文档是一个很重要的作业,它不仅能够进步自己的编程思维,也能够协助团队进步协作功率和削减沟通本钱。下面是一些关于怎样规划一份好的开发文档的主张:

  1. 明晰文档的方针和受众:在编写文档之前,需求明晰文档的方针和受众,确认文档需求包含的内容和写作风格
  2. 运用明晰的语言和示例:运用简洁、明晰的语言描述问题,运用示例代码和截图协助读者了解问题。
  3. 分层次安排文档:文档应该依照逻辑和功用分层次安排,每一层都有明晰的方针和内容。
  4. 运用图表和图形化东西:图表和图形化东西能够有效地展现杂乱的概念和数据,协助读者更好地了解文档内容。
  5. 定期更新和保护文档:开发文档需求定期更新和保护,以反映最新的代码和功用。

经过规划一份好的开发文档,能够进步自己的编程思维,使得代码愈加明晰和易于保护,一起也能够进步团队的协作功率和代码质量。

向上有安排的反应

常常向领导有安排的报告开发发展、问题、成果,不仅能够进步编程思维,还能够进步自己的作业功率和沟通才干

首要,向领导报告开发发展、问题和成果,能够让自己愈加明晰地了解项目的发展状况和使命的优先级,协助自己更好地掌控项目发展和办理时刻。

其次,经过向领导报告问题,能够促使自己愈加深化地了解问题的本质和处理方案,一起也能够得到领导的反应和指导,协助自己更快地处理问题。

最终,向领导报告开发成果,能够协助自己更好地总结经历和经历,促进自己的生长和进步编程思维。一起,也能够让领导更明晰地了解自己的作业成果,进步领导对自己的认可和评价。

向领导有安排地报告开发发展、问题和成果,不仅能够进步编程思维,还能够进步作业功率和沟通才干,促进自己的生长和开展。

总结

  1. 编程思维的进步
  • 学习数据结构和算法,尤其是常见的算法类型和实践运用
  • 阅览优异开源代码,了解代码架构和规划思维,学习开发最佳实践
  • 学习规划形式,尤其是常见的规划形式和运用场景
  1. 实践项目开发中的运用
  • 经过代码重构,优化代码质量和可保护性
  • 运用算法处理实践问题,例如功用优化、数据处理、机器学习等
  • 运用规划形式处理实践问题,例如代码复用、扩展性、灵活性等
  1. 沟通与协作才干的进步
  • 与团队成员保持良好的沟通,及时反应问题和发展状况
  • 向领导有安排地报告开发发展、问题和成果,以进步作业功率和沟通才干
  • 参与技能社区活动,沟通分享经历和知识,进步团队的技能实力和协作才干

以上是这些方面的中心点,当然每个方面都有许多细节需求重视和完善,需求持续学习和实践。

附件

以下是我之前为项目处理老项目的图片结构问题而规划的文档,因名称原因只能图片展现

首要,交代了布景,存在的问题

image.png

针对问题,提出规划思维

image.png

开端规划,从物理结构到架构

image.png

image.png