浅读《简约之美-软件设计之道》

news2024/12/26 23:12:20

浅读《简约之美-软件设计之道》

    大家好,我是Lampard~

    这个周末阅读了一本程序设计相关的书籍《简约之美-软件设计之道》,它原著是《The Science of Software Development》,由余晟大大翻译。

    这本书只有数十页,和它的命名一样追求简洁。虽然我只是一个资历尚浅的程序,但在阅读的过程中却也多次产生了共鸣。它令我清晰地明白了代码简约的重要性。下面是我对该书的一些浅读感受。

 

(一)每个写代码的人都是设计师

   “ 在软件项目中,每个程序员的工作都与设计有关。首席程序员负责设计程序的总体框架;高级资深程序员负责大的模块;普通程序员则设计自己的小模块,甚至是一个文件的某一部分。”

  “  团队里每个人都有责任保证自己的代码有着良好的设计。任何软件项目里,任何写代码的人,在任何层面上都不能忽略设计。”

    诚然每个人职级有高低,能力有大小,所负责的模块肯定是不一样的。但对于每一个需求,都应当要经过自己设计。并非大模块大系统设计才有意义,只要自己的设计能够使程序更加高效简洁,更容易拓展,更容易维护,甚至只是加一行注释另其他同事更易读,都是有意义的。程序不是重复枯燥的CV工作,每个程序员都是一个设计师。

 

(二)程序的设计有一个相同的目标,那就是帮助他人

“确保软件能提供尽可能多的帮助“

”确保软件能持续地提供帮助“

”设计程序员能容易开发和维护的软件系统“

    程序的设计有一个相同的目标,那就是帮助他人。这里的”他人:既指的是用户,也指代其他程序同事。

    我属于游戏开发团队,对于用户我们应该提供更愉悦的体验,更便捷明晰的操作。不要设计一些冗余的,玩家难以发现或者根本用不到的功能。

    对于其他程序,首先设计的代码应该是简洁易懂,软件的任何一部分的难度正比于其设计的简洁程度。代码很高端,只有自己才懂不酷,简洁到傻子都能看懂很酷。不然后来的程序都要问自己一遍这样花费的时间成本也太大了,而且也很麻烦不是么。

(三)考虑需求成本与价值的关系

”任何一点改变,其合意程度与其价值成正比,与所付出的成本成反比“

    书中给了我们一条计代码设计的代价公式

    在需求设计之初,应该考虑该需求的成本和价值的关系。

    若是一个能为项目带来重要价值的需求,则代表着该功能以后很大可能会长久维护,那么就值得多花时间去架构,把程序做到低耦合易拓展。虽然会增加当前实现的时间,但是对于长久来看,可以降低日后占大头的维护成本。

    否则应该降本增效,不要花太多时间去使用晦涩难懂的高新技术,或者强行把程序设计得通用或者可复用,编写不必要的代码。当然一个需求是否有价值作为程序可能难以判定,这可能就得更多地依赖策划和PM了。

(四)结语

    书中还分享了许多有趣的例子,就不在这里一一赘述了,大家可以去看看这本书,相信哪怕不是程序同学也能受益匪浅。感谢各位阅读,拜拜~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/581685.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux---GUN binutils

文章目录 一、GUN binutis概述二、工具集详细说明nm指令使用size指令使用objdump指令使用addr2line指令使用readelf指令使用strip指令使用 一、GUN binutis概述 什么是GUN binutis?它是一个二进制工具集,默认情况下所有 Linux 发行版中都会安装这些二进制工具。实际…

chatgpt赋能python:Python中的Cumsum()函数

Python中的Cumsum()函数 Python是数据科学家和工程师喜欢的一种高级脚本语言。它为许多数据科学的任务提供了大量的分析和可视化工具。 在Python中,Cumulative Sum或cumsum()函数是一个非常有用的函数之一。 它可以基于给定的轴计算数组元素的累积和。 什么是cums…

【牛客算法BM2】 链表内指定区间反转

​ 你好,欢迎来到我的博客!作为一名程序员,我经常刷LeetCode题目来提升自己的编程能力。在我的博客里,我会分享一些我自己做过的题目和解题思路,希望能够帮助到大家。今天,我想和大家分享一道挑战性较高的题…

chatgpt赋能python:Python编程技巧:没有换行输入三个数的方法

Python编程技巧:没有换行输入三个数的方法 在Python编程过程中,我们经常需要从用户输入一些数据。但是,当我们需要从用户输入多个数值时,我们往往会遇到一些问题,比如输入回车符会造成程序无法正常执行等。那么&#…

被比尔盖茨选中的GPT技术,是如何演进,又革谁的命?

作者 | 智商掉了一地、Python 如果机器能够以类似于人类的方式进行理解和沟通,那会是怎样的情况?这一直是学界中备受关注的话题,而由于近些年来在自然语言处理的一系列突破,我们可能比以往任何时候都更接近实现这个目标。在这个突…

C语言基础:翁恺笔记

英尺英寸换算米案例&#xff1a; #include <stdio.h>int main() {int inch0,foot0;printf("请输入身高的英尺和英寸\n");scanf("%d %d",&inch,&foot);printf("身高是%f米",(inchfoot/12)*0.3048);return 0; } 总结&#xff1a;…

mac的maven的环境变量配置

首先下载maven文件 下载安装 下载地址&#xff1a; Maven – Download Apache Maven 2、配置环境变量 打开mac终端&#xff0c;不做任何操作直接输入命令&#xff1a;vim ~/.zshrc 打开.zshrc之后&#xff0c;按下i键&#xff0c;进行配置如下&#xff1a; #maven export M…

chatgpt赋能python:Python下载与运行指南-让Python脚本更容易使用

Python下载与运行指南 - 让Python脚本更容易使用 Python已经成为世界上最流行的编程语言之一。Python具有简单易用的特点&#xff0c;几乎可以开始创建任何类型的应用程序或脚本。如果你是一名新手或是一名经验丰富的开发者&#xff0c;Python都是一款优秀的编程语言。 本篇文…

chatgpt赋能python:Python中KW的介绍:了解Python关键字

Python中KW的介绍&#xff1a;了解Python关键字 在Python语言中&#xff0c;KW是一个非常重要的概念。KW是Python中的关键字&#xff0c;也就是非常重要的语法元素。在程序中使用正确的KW可以帮助我们避免一些常见的错误&#xff0c;从而提高代码的可读性和运行效率。本文将对…

list常见接口的使用(基于c++标准库中的STL)

前言 list是重要的容器了解它的常见接口以及使用是很有必要的&#xff0c;为什么有了vector还要有list呢&#xff1f;因为vector存在一些缺陷&#xff0c;比如&#xff1a;容量满了要扩容&#xff0c;扩容是要付出代价的&#xff08;性能的损失&#xff09;&#xff0c;存在空…

【Leetcode -724.寻找数组的中心下标 -728.自除数】

Leetcode Leetcode -724.寻找数组的中心下标Leetcode -728.自除数 Leetcode -724.寻找数组的中心下标 题目&#xff1a;给你一个整数数组 nums &#xff0c;请计算数组的 中心下标 。 数组 中心下标 是数组的一个下标&#xff0c;其左侧所有元素相加的和等于右侧所有元素相加的…

【网络编程】一文详解http协议(超文本传输协议)

目录 一、http协议 1、http协议的介绍 2、URL的组成 3、urlencode和urldecode 二、http的请求方法、状态码及状态码描述、常见的响应报头 1、http请求方法 2、http状态码及状态码描述 3、http常见的响应报头 三、http协议客户端和服务器的通信过程 1、如何保证请求和…

驱动LSM6DS3TR-C实现高效运动检测与数据采集(2)----配置滤波器

工作模式 在LSM6DS3TR-C中&#xff0c;加速度计和陀螺仪可以独立地开启/关闭&#xff0c;并且可以拥有不同的ODR和功耗模式。 LSM6DS3TR-C有三种可用的操作模式&#xff1a; ● 仅加速度计活动&#xff0c;陀螺仪处于断电状态 ● 仅陀螺仪活动&#xff0c;加速度计处于断电状态…

chatgpt赋能python:Python中0.2+0.1的问题解决方案

Python中0.20.1的问题解决方案 在Python中&#xff0c;0.20.1的结果并非等于0.3。这是由于计算机在二进制中存储小数时会存在精度问题导致的。而这个问题在日常编程中可能并不会带来太大的影响&#xff0c;但在需要精确计算的场景下&#xff0c;如金融或科学领域&#xff0c;就…

第 2 章:Vue 组件化编程

目录 模块与组件、模块化与组件化 模块 组件 模块化 组件化 非单文件组件 小结 组件的几个注意点 组件的嵌套 VueComponent构造函数 小结 一个重要的内置关系 小结 单文件组件 一个.vue 文件的组成(3 个部分) 1. 模板页面 2. JS 模块对象 3. 样式 基本使用 模…

chatgpt赋能python:Python中4+5的结果是多少?

Python中45的结果是多少&#xff1f; Python是一种高级的编程语言&#xff0c;由它所支持的各种库和框架&#xff0c;可以对不同的业务场景进行快速、高效的处理。在Python中&#xff0c;基本的运算符包括加、减、乘、除等&#xff0c;其中加操作是一个非常基本的操作&#xf…

chatgpt赋能python:Python中isin函数的使用方法

Python中isin函数的使用方法 Python是一种流行的编程语言&#xff0c;被广泛使用于数据分析、Web应用程序和游戏开发等领域。其中&#xff0c;Python的算法和数据结构库为程序员提供了实用的工具&#xff0c;使得数据的筛选、排序和搜索操作更加简易。Python之中的isin函数&am…

浅尝RTSP

RTSP (real time streaming protocol) RTC2326 RTSP 实时流传输协议,是TCP/IP 协议体系中的一个应用层协议,由哥伦比亚大学, 网景和realnetworks公司提交的IETF RTC 标准&#xff0c;该协议定义了一对多应用程序如何有效地通过IP网络传送多媒体数据。 RTSP在体系结构上位于 rtp…

二分搜索树层序遍历

二分搜索树的层序遍历&#xff0c;即逐层进行遍历&#xff0c;即将每层的节点存在队列当中&#xff0c;然后进行出队&#xff08;取出节点&#xff09;和入队&#xff08;存入下一层的节点&#xff09;的操作&#xff0c;以此达到遍历的目的。 通过引入一个队列来支撑层序遍历…

【SpringBoot】整合Mybatis-Plus并输出SQL日志

目录 本地开发环境说明pom.xml主要依赖application.yml主要配置MapperScan注解使用说明实体类示例Mapper接口示例Service接口示例Service接口实现类示例单元测试示例打印SQL日志使用slf4j打印SQL 总结 本地开发环境说明 开发依赖版本Spring Boot3.0.6Mybatis-Plus3.5.3.1JDK20…