V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Gota
V2EX  ›  程序员

分享一些有助于提升程序设计水平的书籍

  Gota ·
gota33 · 2022-01-29 16:09:02 +08:00 · 6555 次点击
这是一个创建于 1015 天前的主题,其中的信息可能已经有所发展或是发生改变。

不知道大家有没有这样的感觉, 刚入行的时候比较喜欢读一些新书, 尤其是讲时髦技术的书. 摸爬滚打两三年之后, 大概率会感觉到有个瓶颈期, 这时候读书就比较偏向于选择一些分享经验总结的书籍. 所以这次趁着放假, 特来分享几本经验性的书籍.

这几本书都比较薄, 一般两三天就可以读完一本. 适合有一两年实际工作经验的读者, 自己踩过坑再读最能领会其精髓.

A Philosophy of Software Design

软件设计哲学

豆瓣链接: https://book.douban.com/subject/30218046/

这是本 2018 年的书, 作者是斯坦福教授、Tcl 语言发明者 John Ousterhout.

本书核心论点: 软件设计的核心在于降低复杂性.

前 11 章是本书的精华, 定义了复杂性, 并分析了其产生的原因, 及可能导致的后果. 接下来描述了各种消除复杂性的策略, 包括: 1. 模块化设计, 2. 信息隐藏, 3. 分层抽象, 4. 错误处理.

虽然看起来都是一些再熟悉不过的词, 但由作者这样经验老道的大师分析下来, 确实给人一种眼前一亮, 醍醐灌顶的感觉.

不过本书没有引进国内, 所以想看的话只能到书栈网之类的网站上找找民间翻译的版本了. 水平不错的话也可以直接买英文版.

The Art of SQL

SQL 语言艺术

alt 属性文本

豆瓣链接: https://book.douban.com/subject/3012601/

这本 2008 年出版的书, 是由有着 25 年 SQL 性能调优经验的大牛 Stéphane Faroult 编写的.

和一般讲 SQL 概念的书不一样, 本书将 SQL 调优比喻成一场战争, 从战略部署开始讲起, 直到每个具体的战役, 甚至还有锦囊妙计. 每个章节都结合了作者自身的实际经历, 非常的充实.

这本书直接就能买到中文版实体书, 限于篇幅我就不多介绍了.

Google API 设计指南

网址: https://cloud.google.com/apis/design/

这其实是不是书啦, 而是一份文档, 自带中文.

经常看到有人争执接口设计方面的问题, 所以拿出来分享下. 我几年前也经常和同事在这种问题上争得不亦乐乎, 不过一般来说我们争论的出发点都是为了自己编码方便, 等到几年后再看当时的 API 设计, 才深刻地感受到当时自己给团队挖了多大的坑.

所以有次开会就确定下来, 所有的 API 不论对外对内, 都按这份文档设计. 之后就没怎么在这上面浪费时间了, 而且接口兼容性也比之前好了不少.

其实还有一个额外的好处, 就是几乎不用自己想接口和字段的名字了, 我对起名这种事真的是苦手...

结语

先分享这三本书吧, 一周刚好可以读完. 有读过的 V 友也可以来分享下感想. 如果有其他值得一读的非常经典的经验性书籍, 也欢迎在留言中分享.

26 条回复    2022-02-01 21:44:28 +08:00
DuDuDu0o0
    1
DuDuDu0o0  
   2022-01-29 16:22:29 +08:00
感谢!最近也有这方面的苦恼。

此外,现在的软件设计几乎约等于系统架构了,边界模糊的同时,系统性学习的难度也逐渐增大。
Gota
    2
Gota  
OP
   2022-01-29 16:25:46 +08:00
@DuDuDu0o0 确实, 平时工作中很容易陷入到各种具体实现和细节当中, 适当地退一步思考和学习反而容易把思路理顺.
adoal
    3
adoal  
   2022-01-29 16:26:55 +08:00
Gota
    4
Gota  
OP
   2022-01-29 16:32:00 +08:00
@adoal 真巧, 这本 <发布!设计与部署稳定的分布式系统> 我们老板最近也向我推荐过, 看来过年在家要读读看.
FeifeiJin
    5
FeifeiJin  
   2022-01-29 16:40:16 +08:00
好帖,看书籍可以摄取到的知识比零散的文章多多了。
luban
    6
luban  
   2022-01-29 16:55:26 +08:00
@Gota <发布!设计与部署稳定的分布式系统> 这本书京东读书 vip 电子版免费,有京东 plus 会员就可以领京东读书会员
Gota
    7
Gota  
OP
   2022-01-29 17:16:53 +08:00
@luban 多谢提醒, 正好我有京东会员.
leishi1313
    8
leishi1313  
   2022-01-29 19:45:34 +08:00 via Android   ❤️ 1
既然你提到了第三个,那也可以看看
https://aip.dev
Gota
    9
Gota  
OP
   2022-01-29 19:53:10 +08:00
@leishi1313 看起来是一份更加细化的 API 设计文档, 感谢分享.
pengtdyd
    10
pengtdyd  
   2022-01-29 19:55:41 +08:00
有没有用我不知道,但是我知道出版社肯定是赚钱了
111qqz
    11
111qqz  
   2022-01-29 20:29:30 +08:00
感谢,google API 这个正好要用到
littlewing
    12
littlewing  
   2022-01-29 21:11:17 +08:00
《 unix 程序设计艺术》
Gota
    13
Gota  
OP
   2022-01-29 21:34:39 +08:00
@littlewing 这本书可太经典了, 至今记得其中对于紧凑性的描述, 可以灵活运用于工作中, 检测大部分工作能否顺利完成. 不过这本书比较厚, 适合慢慢读.
yuShan1
    14
yuShan1  
   2022-01-29 21:36:09 +08:00 via iPhone
先 mark 一下,等待各位大佬的分享
zhujq
    15
zhujq  
   2022-01-29 22:41:49 +08:00
你们可真太强了
ttgo
    16
ttgo  
   2022-01-30 03:09:37 +08:00
大学时买过有一本巨厚的 c++,忘了名字了,挺有名的。。书还在家里放着。
虽然巨厚,但没有沦为语法手册,里面有很多作者关于写代码的各种心得。这种风格的书之后再也没见过了。
jackmod
    17
jackmod  
   2022-01-30 07:24:59 +08:00
此贴妙极,我的吃灰收藏再添新丁( doge
最近在重构老系统到微服务上云,可谓雪中送炭。
happypy1
    18
happypy1  
   2022-01-30 07:27:44 +08:00 via iPhone
推荐一本神书:designing data intensive application
https://book.douban.com/subject/26197294
chevalier
    19
chevalier  
   2022-01-30 09:30:50 +08:00
推荐鲍勃大叔的《架构整洁之道》,很多原则用很浅显的语言和例子论述出来,醍醐灌顶
yurong333333
    20
yurong333333  
   2022-01-30 09:43:17 +08:00
《重构》。2021 年一边看一边重构自己的项目,确实受益匪浅。
Gota
    21
Gota  
OP
   2022-01-30 10:23:18 +08:00
@ttgo #16 说到巨厚的书, 我大学也买过一本 <C# 高级编程> 全书 1200 页, 翻到最后发现还有一半内容因为写不下, 请看随书光盘, 我当时人都傻了 ಠ_ಠ
Gota
    22
Gota  
OP
   2022-01-30 10:28:32 +08:00
@happypy1 #18 <数据密集型应用设计> 去年刚看过这本, 确实是本好书. 很适合刚开始做大数据, 但选型时拿不定主意的时候看. 可以对大数据各个方面有个全局性的概览.
Gota
    23
Gota  
OP
   2022-01-30 10:45:16 +08:00
@chevalier #19 几年前读过他写的 <代码整洁之道>, 确实写得通俗易懂, 一条条都分得很细, 很适合刚开始写代码的时候读, 一直照着做应该能养成不错的编码习惯.

@yurong333333 #20 这本也算是经典老书了, 确实是一本很讲究实操的书. 很适合翻个大概, 然后像你说的那样, 用到的时候就查一下.
S2Line
    24
S2Line  
   2022-01-30 11:14:55 +08:00
赞,平时工作的时候很容易陷入一些实现细节,如果能适当跳出来,会发现很多时候一个合适的设计可以屏蔽很多不必要的细节,降低复杂度。需要多学习学习一些设计思想和原则,形成方法论
Gota
    25
Gota  
OP
   2022-01-30 13:59:11 +08:00
@S2Line 你的理解很到位, 写好软件就是要控制好复杂度. 不过实际工作中很少有人能平衡好对内和对外的复杂度, 这也是我大力推荐 <软件设计哲学> 这本书的原因.
SmiteChow
    26
SmiteChow  
   2022-02-01 21:44:28 +08:00
人月神话+bob 老师的 clean code
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2724 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 26ms · UTC 07:17 · PVG 15:17 · LAX 23:17 · JFK 02:17
Developed with CodeLauncher
♥ Do have faith in what you're doing.