推荐几本提高程序员职业素养的书

news2024/11/26 12:13:54

如果你是一名程序员,想要提长自己,那么这几本书推荐给你。

1、好代码 ,坏代码

为了写出优良的代码,我们必须对手上的方案有合理的判断,并彻底想清楚特定方法的结果(好的和坏的)。为此,我们必须了解问题的根本:我们编写代码到底是为了实现什么目标?实现那些目标需要考虑哪些高层因素?本书第一部分将介绍理论方面的内容,以便读者可以为编写优良代码打下坚实基础。

第二部分中的每一章说明代码质量的一个支柱,每一节阐述一项特定的考虑因素或者技术。通常的模式是首先阐释常见的代码问题,然后说明如何使用特定技术改善这一情况。每一节的组织相对独立,这样能为每个希望向其他工程师解释特定概念或考虑因素(例如在代码评审期间)的读者提供有用的参考。

在创建能正常工作(且保持正常工作)的代码和软件时,测试是必不可少的一部分。正如第1章所讨论的,测试有不同的级别,但单元测试通常是工程师日常生活中接触最多的一种测试。关于单元测试的部分在本书的最后介绍,但请不要由此推断单元测试是只在编写完代码后才附加考虑的事项。正如我们在前几章中所看到的,测试和可测试性是我们在编写代码时一直应该考虑的事情。而且,我们将在第10章中看到,有些学派甚至走得更远——倡导在编写代码之前编写测试。

本书分享的实用技巧可以帮助你编写鲁棒、可靠且易于团队成员理解和适应不断变化需求的代码。内容涉及如何像高效的软件工程师一样思考代码,如何编写读起来像一个结构良好的句子的函数,如何确保代码可靠且无错误,如何进行有效的单元测试,如何识别可能导致问题的代码并对其进行改进,如何编写可重用并适应新需求的代码,如何提高读者的中长期生产力,同时还介绍了如何节省开发人员及团队的宝贵时间,等等。

2、代码整洁之道

你会看到好代码,也会看到糟糕的代码。你会看到糟糕的代码如何转化为好代码。你会看到启发、规条和技巧的列表。你会看到一个又一个例子。但最终结果取决于你自己。学写整洁代码很难。它可不止于要求你掌握原则和模式。你得在这上面花工夫。你须自行实践,且体验自己的失败。你须观察他人的实践与失败。你须看看别人是怎样蹒跚学步,再转头研究他们的路数。你须看看别人是如何绞尽脑汁做出决策,又是如何为错误决策付出代价。

阅读本书要多用心思。这可不是那种降落前就能读完的“感觉不错”的飞机书。本书要让你用功,而且是非常用功。如何用功?阅读代码——大量代码。而且你要去琢磨某段代码好在什么地方、坏在什么地方。在我们分解,而后组合模块时,你得亦步亦趋地跟上。这得花些工夫,不过值得一试。

本书大致可分为3个部分。前几章介绍编写整洁代码的原则、模式和实践。第2部分最需要花工夫。这部分包括几个复杂性不断增加的案例研究。你付出的劳动将在第3部分得到回报。这部分只有一章,列出从上述案例研究中得到的启示和灵感。在遍览和清理案例中的代码时,我们把每个操作理由记录为一种启示或灵感。

本书提出一种观点:代码质量与其整洁度成正比。干净的代码,既在质量上较为可靠,也为后期维护、升级奠定了良好基础。作为编程领域的佼佼者,本书作者给出了一系列行之有效的整洁代码操作实践。这些实践在本书中体现为一条条规则(或称“启示”),并辅以来自实际项目的正、反两面的范例。只要遵循这些规则,就能编写出干净的代码,从而有效提升代码质量。

本书阅读对象为一切有志于改善代码质量的程序员及技术经理。书中介绍的规则均来自作者多年的实践经验,涵盖从命名到重构的多个编程方面,虽为一“家”之言,然诚有可资借鉴的价值。

3、重构 改善既有代码的设计(第2版 平装版)

本书是一本为专业程序员编写的重构指南。我的目的是告诉你如何以一种可控且高效的方式进行重构。你将学会如何有条不紊地改进程序结构,而且不会引入错误,这就是正确的重构方式。

1章展示了一个小程序,其中有些常见的设计缺陷,我把它重构得更容易理解和修改。其间你可以看到重构的过程,以及几个很有用的重构手法。如果你想知道重构到底是怎么回事,这一章不可不读。

第2章讨论重构的一般性原则、定义,以及进行重构的原因,我也大致介绍了重构面临的一些挑战。第3章由Kent Beck介绍如何嗅出代码中的“坏味道”,以及如何运用重构清除这些“坏味道”。测试在重构中扮演着非常重要的角色,第4章介绍如何在代码中构筑测试。

从第5章往后的篇幅就是本书的核心部分——重构名录。

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

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

相关文章

F检验.医学统计实例详解

F检验是一种重要的医学统计方法,常用于检验两个或多个样本的方差是否相等,也被称为方差齐性检验。方差齐性检验是医学研究中的基本方法,因为许多重要的统计分析都要求样本方差相等,如方差分析、t检验等。以下将介绍F检验的基本原理…

简单上手Scrapy框架

创建一个Scrapy框架的爬虫程序 安装Scrapy库,直接通过pycharm搜索Scrapy进行安装即可 在终端执行 scrapy startproject 项目名 scrapy startproject Learn 示例 即可创建名为Learn的Scrapy程序,成功创建项目后,会已项目名称创建一个文件夹&…

FTP和SSH连接远程终端Ubuntu

安装好ubuntu后是默认没有ssh服务和ftp服务的,我们需要自己解决一下这个问题 SSH 更新软件列表和软件 sudo apt-get update sudo apt-get upgrade安装ssh sudo apt-get install ssh启动ssh服务 sudo /etc/init.d/ssh start修改ssh服务配置文件 sudo vim /etc/…

前端工程化:发布一个属于自己的规范 npm 包

初始化项目 首先在github创建一个仓库,协议选择MIT,gitignore选择Node,添加README.md描述文件。使用git clone将项目克隆到本地。cd 进入目录,使用vscode打开(终端输入code . 命令即可)。 然后创建一个合理…

CentOS-7 安装 MariaDB-10.8

一、安装之前删除已存在的 Mysql/MariaDB 1 查找存在的 MariaDB # 注意大小写 rpm -qa | grep MariaDB # rpm -qa 列出所有被安装的rpm package (-qa:query all) rpm -qa | grep mariadb # grep (缩写来自Globally search a Regular Expre…

C++ 折叠参数包:悄然增强编程效率

前言 欢迎来到💖小K💖的💞C专栏💞,本节将为大家带来折叠参数包的详细讲解,折叠参数包为C模板编程提供了更加灵活和强大的工具,可以提高代码的简洁性和可读性,看完后希望对你有收获 文…

室内外融合定位UWB信标定位方案

大家好,我是北京华星智控公司小智,今天我给大家介绍室内外融合定位系统方案,该方案室外采用北斗卫星定位技术室内采用UWB定位技术从而实现室内外精确定位无缝切换,实现室内外的融合定位。 室内外融合定位系统, 该方案…

Binder相关问题

Binder相关问题 1、Binder是什么?2、Binder有什么优势?3、Binder如何做到一次拷贝的?4、MMAP的原理是什么?5、Binder机制是如何跨进程的?6、为什么Intent不能传递大数据7、AIDL生成Java类细节8、四大组件底层的通信机制…

波奇学Linux:yum和vim

Linux三种安装方式 源代码安装 用户下载->软件源码->源码编译->可执行程序 rpm安装:相当于去官网下载Linux安装包 可能存在依赖项不匹配问题。 yum安装包 用户yum下载->软件安装包->可执行程序 yum是软件包管理器,解决安装源&…

玩客云刷Armbian带docker详细教程(附所有软件)

文章目录 介绍一.准备工作1.硬件准备2.软件准备 二.开始折腾1.烧录系统固件2.刷入系统1.准备镜像2.刷入镜像3.刷入镜像到系统 三.功能介绍1.网页终端2.设备状态3.AriaNg4.qBittorrent5.微力同步6.filebrowser7.Portainer 四.拓展1.添加Alist1.介绍2.安装3.配置3.1查看密码3.2修…

chatgpt赋能Python-pythoncidere

PythonCider:提供最优质的 Python 编程知识 Python 是目前最受欢迎的编程语言之一,特别在数据科学和人工智能方面应用广泛。如果你是一名 Python 开发者或者正在学习 Python 编程,PythonCider 是一个你绝对不能错过的网站。 什么是 PythonC…

JavaScript实战训练小项目 WebAPI

JavaScript实战训练小项目 文章目录 JavaScript实战训练小项目 & WebAPI1. JS操作DOM树1.1 获得HTML控件/元素标签1.2 操纵控件1.2.1 获取属性值1.2.1 修改属性值 1.3 实现一个猜数字的功能 2. JQuery3. 简单计算器4. 聚合搜索5. 表白墙 JavaScript实战训练小项目 & We…

OpenLayers入门教程汇总目录

前言 本篇作为OpenLayers入门教程的目录,用于整理汇总专栏所有文章,方便查找。 入门 Gis开发入门,OpenLayers、Leaflet、Maplibre-gl和Cesiumjs地图引擎介绍以及几种地图服务vms、vmts介绍vue项目集成并使用OpenLayers地图的两种方式 加…

记ABAC的落地实践

为什么使用ABAC 一般提到授权,我们就会想到角色(role)。什么样的用户拥有什么样的角色可以怎么操作什么样的资源,这是我们普遍使用的权限系统的模型。这里的角色实质上是包含了一组用户操作资源的规则集合。一旦角色被创建&#…

【RISC-V】执行环境

裸机程序 操作系统 虚拟化 RISC-V处理器3种模式 机器模式(M模式) 安全执行环境,通常运行SBI固件,为操作系统提供服务。 特权模式(S模式) 运行操作系统内核,为应用程序提供服务。 用户模式(U模式) 运行应用程序。 虚拟化新增特权模式 …

Boundary IoU:Improving Object-Centric Image Segmentation Evaluation总结笔记

Boundary IoU:Improving Object-Centric Image Segmentation Evaluation(边界Iou:改进以对象为中心的图像分割评价) 目录 一、论文出发点 二、论文核心思想 三、相关工作 四、敏感度分析 五、Boundary IoU定义和实验证明 六、应用 七…

【系统移植】uboot 通过 NFS 加载根文件系统(一) —— 网络环境配置

前面试过了SD卡烧录根文件系统,然后借助环境变量 bootargs 来加载SD卡中的根文件系统,但是实际开发需要经常对文件做增删改等操作,所以将根文件系统放在SD上不大合适。 因此,最常用的做法是把根文件系统放在NFS服务端&#xff08…

Spring事务及事务传播机制

一.事务的含义:多个操作封装在一起,要么同时执行成功,一旦有一个操作执行失败,那么全部执行失败。这里给大家举个例子:比如A给B转账50元,而B没有收到这50元,此时A转账B这个操作也需要进行回滚,恢复到A给B没…

HTTP 协议的基本格式

HTTP 什么是HTTP?HTTP是应用层的一个重要协议.它定义了浏览器怎样向服务器请求文件,以及服务器怎样把文件传送给浏览器. 我们打开浏览器,手动输入一个网址:baidu.com.那么此时浏览器就会给百度的服务器发送请求.百度服务器在返回一个html的响应. 那么我们如何学习HTTP协议呢…

【系统移植】uboot 通过 NFS 加载根文件系统(二) —— 修改环境变量 bootcmd、bootargs

上一部分已经配置好了网络环境,我们要修改环境变量以保证开发板可以正常启动,uboot 环境变量中比较重要的环境变量就是 bootcmd 和 bootargs 目录 1、修改自启动命令 — bootcmd 2、修改自启动参数 —— bootargs (1) root/dev/nfs rw (2) nfsroot …