首页 > 其他分享 >我做软件开发的核心思想考量

我做软件开发的核心思想考量

时间:2024-06-23 09:01:10浏览次数:11  
标签:核心思想 考量 软件开发 代码 编程 系统 复用 设计

要持续提炼思想和方法论的核心。

做一件事,就是持续不懈地追求道领悟道的过程,是要坚持持续不懈地去提炼思想和方法论的。

之前,我写过几篇文章,比如 "软件开发:组织大规模逻辑的技艺""软件开发之道:结构化技艺""谈谈程序员应当具备的技术思维"。这些文章汇聚和提炼了我十年来的最重要的软件开发经验和领悟,使我在软件开发活动中有据可依、有章可循、做事有分寸有尺度。

那么,当我重新回顾自己的软件开发活动时,有哪些思想在我的工作中起着提纲挈领、举足重轻的核心地位呢?

简洁清晰至上

越来越喜欢追求简洁清晰。

简洁清晰的首要是语义清晰,绝不含糊。写代码以语义为导向,而不是以技巧为导向。主流程要足够清晰,步骤明确。每一步采用什么手段来构建,很容易理解。

例子:

  • 命名要贴切,尽可能表达出意图和业务语义。
  • 用字符串表示枚举,而不是用数字代号【除非有排序要求】;
  • 状态和行为要分开,比如不要用隔离动作来表达已隔离的状态;
  • 尽力避免拐弯抹角的表达和实现。
  • 努力做到代码自解释。

这仍然是我努力在持续追求的目标。

写出健壮可靠的代码

有人奔着学习屠龙之术而去,而我只想写出健壮可靠的代码。

代码即修行。写出一次好代码,就是一次修行。代码是程序员技能品格的最佳证明。只有对代码精敲细作,才能写出牢固可靠、值得信赖的代码。

健壮性和必要的日志信息是最基本的要求。其次是性能和稳定性,然后是可复用性、可扩展性、可配置性。最后,安全性是最不可忽视的代码质量属性。而可维护性,则是改动成本的衡量尺度,是一个综合的代码评价。

要写出好代码,需要相当丰富的知识,一次次的实战磨炼, 还需要持续不断地做代码重构。在代码重构中持续提升编程技艺。

不过,我现在并不推崇过度高质量代码了,要求:能用、健壮、容易排查问题、性能过关。人生还有很多珍贵的事物值得追求。不必要把全部精力都投入在代码上。

系统设计观

在一定程度上能够写出好代码之后,就需要培养系统设计观,具备 Build System 的能力。

系统设计,需要从系统整体上审视系统,系统的模块、组件及关联关系,系统模块、组件的联动,从框架层面上保证系统的可靠而高效的构建。复杂系统,往往有复杂的联动关系,如果不从系统整体上综观,作出有效的权衡取舍,就可能像跷跷板一样,这里解决了BUG,那里又出错了。剪不断理还乱。

系统整体主要包括:系统的基础设施;系统的模块设计及技术方案;系统模块的关联设计;系统可用工具箱;系统的监控预警等。

培养系统设计能力,一个很关键的点是模块化和解耦。模块化是指将紧密关联的组件放在一起,解耦是将有关联但并不紧密的组件用合理的方式连接(通信)起来,尽量不受对方变化而影响,减少改动和出错成本。因此,培养系统设计能力,可以从模块化设计上着手,先努力做出好用的模块,再上升到系统层面。

要做到解耦,则需要做到良好的关注点分离。关注点分离是最基本又最核心的软件开发思想之一。分离状态和行为,分离视图、控制与模型,分离技术设施与业务逻辑,分离意图不同的逻辑,分离维度不同的实体,分离不变与变化等。

集中管理与一致性

要做到可维护性,集中管理与一致性必不可少。

  • 同一类事物,要放在一个枚举里;
  • 同一类操作,尽量采用一致的做法;
  • 一致的命名与错误处理风格。

一致性的一个重要体现是,避免写重复代码。涉及多段重复代码改动时,很容易改漏。

可复用、可扩展、可配置化

从显而易见的层面来看,编写可复用、可扩展、可配置化的代码,其目的就是在完成相似需求时,能够省事省力,提升开发效率,降低开发成本,也是管理者喜闻乐见的;从个人技能层面来看,编写可复用、可扩展、可配置化代码,对个人的设计、编程能力都有更高的要求,也更能锻炼程序员的思维能力。可谓是一举两得。

要编写可复用、可扩展、可配置化的代码:

  • 经常性地提炼公共逻辑、通用逻辑,可以培养可复用的编程思维和能力;主要技术手段是泛型+函数式编程。
  • 经常性地思考变化、在做需求的过程中密切关注需求有哪些方向上的变化,思考应对的方法,尝试去写一些简易框架来应对一类相似的需求,可以培养可扩展的编程思维和能力;主要技术手段是接口+设计模式。
  • 关注可配置化的思路和技术实现,尝试去做,可以培养可配置化的编程思维和能力;主要技术手段是脚本引擎和规则引擎。

在未来,可复用、可扩展编程思维是基础,可配置是软件开发的方向。低代码 + AI ,就是一个明证。

性能与稳定性

鉴于性能和稳定性是很多程序员都追求的目标,也是软件工程所注重的重要指标,这里就不赘言了。

  • 性能: 大数据量的查询和更新、大规模的计算;主要技术手段是缓存、并发、批量、索引、减少不必要的计算。
  • 稳定性:突发大流量的承载能力;主要技术手段是限流、熔断、削峰。

小结

简洁清晰、写出健壮可靠的代码、系统设计观、集中管理与一致性、可复用可扩展可配置化、性能与稳定性的考量,可以说是目前我做软件开发(仅从技术层面来看)的最核心的考量了。有了这些核心思想的引领,接下来就是技能和方案层面的事情了。

标签:核心思想,考量,软件开发,代码,编程,系统,复用,设计
From: https://www.cnblogs.com/lovesqcc/p/18263038

相关文章

  • 发外链比较好的平台选择:策略与考量
    在当今的互联网营销环境中,外链(即外部链接)的重要性不言而喻。外链不仅可以增加网站的曝光度,还能在一定程度上提升网站在搜索引擎中的排名。然而,选择一个“发外链比较好的平台”并非易事,需要综合考虑多个因素。一、外链平台的选择原则在选择发外链的平台时,我们首先要明确目标受......
  • Windows C++ 应用软件开发从入门到精通详解
    目录1、引言2、IDE开发环境介绍2.1、VisualStudio 2.2、QTCreator3、Windows平台实用小工具介绍3.1、代码编辑器VSCode3.2、代码查看编辑器SourceInsight3.3、文本编辑器Notepad++3.4、文件搜索工具Everything4、C++语言特性4.1、熟悉泛型编程4.2、了解......
  • 软件开发项目全套文档资料参考(规格说明书、详细设计、测试计划、验收报告)
     前言:在软件开发过程中,文档资料是非常关键的一部分,它们帮助团队成员理解项目需求、设计、实施、测试、验收等各个环节,确保项目的顺利进行。以下是各个阶段的文档资料概述:软件项目管理部分文档清单: 工作安排任务书,可行性分析报告,立项申请审批表,产品需求规格说明书,需求调研......
  • 敏捷方法对于快速软件开发至关重要
    介绍敏捷方法是指在项目管理领域中,一种旨在提供高质量软件解决方案的协作和灵活方法。与传统的项目管理方法(瀑布式)相比,敏捷方法有很大不同,它更注重迭代进度、反馈整合、客户满意度和团队协作。历史与演变敏捷方法论的起源可以追溯到20世纪70年代和80年代,当时软件开......
  • 如何在软件开发时代实现技术+业务的双重突破?【含资源】
    在当前的软件开发时代,许多企业面临着核心技术缺失、专业人才短缺以及产品能力单一等问题,迫切需要加强技术实力,补充和扩展原有的业务和行业能力。将技术与业务需求深度结合,构建适应时代需求的技术+业务模式,成为软件企业获得更好发展的关键?点击这里查看并领取资源截图:......
  • 【文末附gpt升级秘笈】SDCon 2024全球软件研发技术大会:引领AI 2.0时代的软件开发新篇
    SDCon2024全球软件研发技术大会:引领AI2.0时代的软件开发新篇章一、引言随着人工智能技术的飞速发展,我们迎来了AI2.0时代。在这个时代,人工智能技术不仅深刻影响着我们的日常生活,更在软件研发领域掀起了一场革命。AI原生应用的出现,使得每行代码、每个应用都有可能迎来被智能......
  • 何为软件开发的难?
    经常会有人在面试过程中被问到做的最难的一个项目是什么?但很多人因为平时工作忙或有开源在做,面试准备少,或者临场反应差而给人留下不好的印象,也有很多人因为工作闲的整天看业界分享的ppt,而直接套用到自己的项目中,加上现成的漂亮话术,很容易俘获部分面试官的心。即使抛开诚实这一基本......
  • 软件开发文档汇总(开发&实施&运维&安全&交付)
       前言:在软件项目管理中,每个阶段都有其特定的目标和活动,确保项目的顺利进行和最终的成功交付。以下是软件项目管理各个阶段的详细资料:软件项目管理部分文档清单: 工作安排任务书,可行性分析报告,立项申请审批表,产品需求规格说明书,需求调研计划,用户需求调查单,用户需求说明......
  • [干货!必看文章]学会如何用L4级AI软件开发平台免费制作应用程序
    前言:  自从ChatGPT问世以来,就掀起了全球AI大模型的浪潮。国外有Claude,Llama,Grok,Suno,国内有kimi,有智谱AI,有通义千问,还有文心一言...国内大模型市场规模已经达到了216亿,在2028年预估将达到1179亿。显而易见AI已然是当前最火爆的行业。因此,懂AI,会用AI已经成为了一项必备的技......
  • 金地集团:性能考量为首要,核心系统的数据库选型|OceanBase 《DB大咖说》(七)
    OLTP是关系型数据库的典型使用场景。然而,在实际应用中,除了OLTP外,OLAP能力也至关重要,因此催生了HTAP技术的发展。金地集团的核心系统,新一代预算管理系统,凭借OceanBase的HTAP能力,仅花费一年便实现了从研发到投入使用,其测算的性能效率显著提升,达到了90倍的飞跃,成功满足了集团整体......