热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

为什么进步太慢,由于你没有一个好习惯

原文地址:https:www.jianshu.comp4188476f1a1d有人问我如何做好架构设计?怎么灵活运用设计模式?我的答复是,你做不好这些只是由于你没有养成一个良好的编

原文地址: https://www.songma.com/p/4188476f1a1d

有人问我如何做好架构设计?怎么灵活运用设计模式?我的答复是,你做不好这些只是由于你没有养成一个良好的编程习惯

我为什么写这么多开源框架,还长期保持维护?

除了我想让更多人受益于开源外,还有一点就是,我想保持我良好的编程习惯

写业务代码也可以保持良好的编程习惯啊

能,但是太慢!

写业务时无法注意到的细节

在写业务代码时,即便项目时间充裕,你也会忽略掉很多细节,而这些细节正是影响你进步速度的关键,但你自己却很难察觉,在不知不觉间就对你的进阶之路造成了很大的影响

所以你的进步速度非常之慢,做了多年也只是熟练而已,无法更进一步

业务代码和框架代码最直观的差别就是,业务代码可以随便修改,而框架代码,使用者不能直接修改

因为业务代码的修改不受限制,所以一有需求变动,你就直接通过修改问题代码的方式来快速处理问题,即便这个代码的变动非常频繁,但你的第一反应却不是通过代码设计的方式来处理后续的扩展问题,由于这看似一劳永逸的方式,会白费你当下大量的时间

人类的潜意识会更注重当下付出的成本,而忽略掉未来会取得的收益

由于你上面的编码方式,所养成的不好的编程习惯,会让你本能的不注重代码的耦合性、灵活性、可扩展性

所以即便你天天敲代码,你的进步也如此之慢,由于你平常就缺乏架构设计、代码设计的锻炼,日积月累,你也只是搬砖的速度比之前更快一点而已

写开源框架时给你带来的改变

这个时候假如有一个好的 leader 能每天 review 你的代码,还时常提示你这些问题,只需你慢慢改成,并养成习惯,那你的进阶之路也会十分顺畅

但如此好的 leader 是可遇不可求的,那我们假如没有一个好 leader,该如何养成一个好习惯呢?

我的建议就是做开源库,而且尽量做开源框架,比方架构框架、UI 框架,网络框架、图片框架,尽量少做开源 App(当然假如为了学习某项技术也是可以的)

由于开源 App 主要是帮助你和别人学习某些技术,也是有大量的业务代码存在的,无非就是用了少量新的技术,而且还是你一个人写,有些细节你更不会考虑 …

而开源框架是拿给别人调用的,所以对代码质量要求更高,考虑的细节更多,对你的提升也越大

并且你的框架代码是放在服务器上的,使用者无法修改你的代码,这就会强迫你更关注代码的耦合性、灵活性、可扩展性,甚至是你写业务时根本不会注重的注释和文档

由于使用者用得稍有不爽就会给你发起 issue,不断地督促你优化你的代码、注释、文档,不断地帮助你培养一个良好的编程习惯

这就好比你有成百上千个好 leader 每天 review 你的代码,并指出你的问题,给予更好的建议,而且这些 leader 中绝对藏龙卧虎,这样日积月累下去,你怎能不成长?

良好的编程习惯助你快速进步

我的很多编程习惯,经过不断的纠错,优化,纠错,优化,已经深深的刻进我的脑子里了

我框架用到的大多数设计模式,都不是我刻意去用的,都是遇到某些问题,或者者使用者需要添加什么功能,我为了不影响之前的版本,保证扩展性的前提下,去处理这些问题,而不得不去使用这些设计模式,很多情况下,代码已经写完了,才知道,原来我用的是 xx 设计模式

在这种不断优化代码,养成的良好编程习惯下,我写代码时,使用设计模式已经变成了潜意识的行为,根本说不出为什么要用这个设计模式,只由于觉得这样用才是最优解,这就好比拳击手,遇到攻击时会潜意识的躲闪、反击一样,这就是不断实战、不断训练的结果

我的所有开源框架加起来每个月平均下载量在 5 万左右,每天都有各种 issue 向我飞来,这些成千上万的使用者(监督者),迫使我不断地优化自己的代码,甚至连每个注释我都精雕细琢

框架要做到满足所有人的需求太难了,但只需你不断优化,能做到让大部分人满意,那对你的提升绝对是巨大的,而且你的编程习惯也会有巨大的飞跃

比方我写注释的编程习惯培养起来后,我的每个开源框架,都写了大量的注释,形容的非常详细,保证大部分人都能明白原理,但还是有很多人跑过来问我文档和注释上已经写了的问题

我真的是吐血,兄弟,我真不想答复,你杀了我好吧 …

一个好的习惯,坚持一天,就往目标前进一步

一个坏的习惯,持续一天,也就白费一天时间

我做开源三年时间改掉了我很多不好的编程习惯,让我进步飞速,所以我感谢开源

我也鼓励更多的人积极参加开源,让别人受益的同时,别人也让你不断进步

当然做开源,并不只是代码写的好,就能收获大量的 star,他还需要综合性的能力,比方框架定位、产品需求分析、经营、推广等很多东西,其中最重要的就是持续维护

我去年创新的新框架 AndroidAutoSize,上线一个月时间就 3k star,现在每个月有 2 万以上的下载量,超过我之前的所有开源框架,这就是由于我之前所积累的开源经验所赐,关于 Github 的经营之道后面我也会分享的

公众号

扫码关注我的公众号 JessYan,一起学习进步,假如框架有升级,我也会在公众号上第一时间通知大家

image

Hello 我叫 JessYan,假如您喜欢我的文章,可以在以下平台关注我

  • 个人主页: http://jessyan.me
  • GitHub: JessYanCoding
  • 掘金: https://gold.xitu.io/user/57a9dbd9165abd0061714613
  • 简书: http://www.songma.com/u/1d0c0bc634db
  • 微博: http://weibo.com/u/1786262517

-- The end


推荐阅读
  • ArchSummit深圳2014将于7月18日拉开帷幕,所有讲师已确认,涵盖9个热门话题,共36场精彩报告。InfoQ中文站提供了详细的讲师和报告列表。 ... [详细]
  • 通过Web界面管理Linux日志的解决方案
    本指南介绍了一种利用rsyslog、MariaDB和LogAnalyzer搭建集中式日志管理平台的方法,使用户可以通过Web界面查看和分析Linux系统的日志记录。此方案不仅适用于服务器环境,还提供了详细的步骤来确保系统的稳定性和安全性。 ... [详细]
  • 创建项目:Visual Studio Online 入门指南
    本文介绍如何使用微软的 Visual Studio Online(VSO)创建和管理开发项目。作为一款基于云计算的开发平台,VSO 提供了丰富的工具和服务,简化了项目的配置和部署流程。 ... [详细]
  • FinOps 与 Serverless 的结合:破解云成本难题
    本文探讨了如何通过 FinOps 实践优化 Serverless 应用的成本管理,提出了首个 Serverless 函数总成本估计模型,并分享了多种有效的成本优化策略。 ... [详细]
  • 尽管深度学习带来了广泛的应用前景,其训练通常需要强大的计算资源。然而,并非所有开发者都能负担得起高性能服务器或专用硬件。本文探讨了如何在有限的硬件条件下(如ARM CPU)高效运行深度神经网络,特别是通过选择合适的工具和框架来加速模型推理。 ... [详细]
  • 本文作者分享了在阿里巴巴获得实习offer的经历,包括五轮面试的详细内容和经验总结。其中四轮为技术面试,一轮为HR面试,涵盖了大量的Java技术和项目实践经验。 ... [详细]
  • 深入解析Serverless架构模式
    本文将详细介绍Serverless架构模式的核心概念、工作原理及其优势。通过对比传统架构,探讨Serverless如何简化应用开发与运维流程,并介绍当前主流的Serverless平台。 ... [详细]
  • Spring Cloud因其强大的功能和灵活性,被誉为开发分布式系统的‘一站式’解决方案。它不仅简化了分布式系统中的常见模式实现,还被广泛应用于企业级生产环境中。本书内容详实,覆盖了从微服务基础到Spring Cloud的高级应用,适合各层次的开发者。 ... [详细]
  • 数据集成策略:ETL与ELT架构对比及工具选择
    随着企业信息化的深入发展,‘数据孤岛’问题日益突出,阻碍了数据的有效利用与整合。本文探讨了如何通过构建数据仓库解决这一问题,重点分析了ETL与ELT两种数据处理架构的特点及适用场景,为企业选择合适的ETL工具提供了指导。 ... [详细]
  • 探讨架构师在项目中应如何平衡对产品的关注和对团队成员的关注,以实现最佳的开发成果。 ... [详细]
  • 探索电路与系统的起源与发展
    本文回顾了电路与系统的发展历程,从电的早期发现到现代电子器件的应用。文章不仅涵盖了基础理论和关键发明,还探讨了这一学科对计算机、人工智能及物联网等领域的深远影响。 ... [详细]
  • Netflix利用Druid实现高效实时数据分析
    本文探讨了全球领先的在线娱乐公司Netflix如何通过采用Apache Druid,实现了高效的数据采集、处理和实时分析,从而显著提升了用户体验和业务决策的准确性。文章详细介绍了Netflix在系统架构、数据摄取、管理和查询方面的实践,并展示了Druid在大规模数据处理中的卓越性能。 ... [详细]
  • Windows 7 64位系统下Redis的安装与PHP Redis扩展配置
    本文详细介绍了在Windows 7 64位操作系统中安装Redis以及配置PHP Redis扩展的方法,包括下载、安装和基本使用步骤。适合对Redis和PHP集成感兴趣的开发人员参考。 ... [详细]
  • 本文详细介绍了如何在 Android 中使用值动画(ValueAnimator)来动态调整 ImageView 的高度,并探讨了相关的关键属性和方法,包括图片填充后的高度、原始图片高度、动画变化因子以及布局重置等。 ... [详细]
  • 云屏系统基于嵌入式微系统msOS,旨在解决当前嵌入式彩屏GUI编程中硬件要求高、软件开发复杂、界面效果不佳等问题。该系统通过结合MCU和Android技术,利用Html5+JavaScript实现高效、易用的图形用户界面开发,使嵌入式开发人员能够专注于业务逻辑。 ... [详细]
author-avatar
人生-顺势而为
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有