程序员的制胜技

程序员的制胜技
分享
扫描下方二维码分享到微信
打开微信,点击右上角”+“,
使用”扫一扫“即可将网页分享到朋友圈。
作者: [土耳其] (Sedat Kapanoglu)
2023-09
版次: 1
ISBN: 9787115611567
定价: 79.80
装帧: 平装
开本: 其他
纸张: 胶版纸
页数: 228页
字数: 320千字
1人买过
  • 本书专注于介绍项目开发领域的实战方法和高效范式,共 9 章,从预备理论知识开始,按照业务开发的真实流程详细阐述了以往开发的经验误区,并结合实际的.NET 和 C#代码,给出经过大量项目检验的解决方案。
      本书绝不是市面上随处可见的技术手册。作者用他独有的幽默感和数十年的软件开发经验,将软件开发的实战故事一一道来。
      正如作者所言,无论你是非科班出身的开发者,还是已经入行几年的开发“上道人”,本书都能对你有所裨益。 塞达特 ? 卡帕诺格鲁(Sedat Kapano?lu),一名自学成才的软件开发工程师,来自土耳其的埃斯基谢希尔。他曾入职美国华盛顿州西雅图的微软公司,担任 Windows 核心操作系统工程师。他的专业软件开发生涯长达 30 年。

    塞达特创建了土耳其倍受欢迎的社交平台——酸字典(Ek?i S?zlük)。在 20 世纪 90年代,他活跃于土耳其的国际数字艺术社区 demoscence,其主题是利用代码生成图形和音乐。 第 1 章 初入行当 1

    1.1 在实战中,什么最重要? 2

    1.2 谁是实战程序员? 3

    1.3 杰出实战程序员 4

    1.3.1 懂得质疑 4 

    1.3.2 结果驱动 5 

    1.3.3 高产出 6 

    1.3.4 接受复杂性和模糊性 6 

    1.4 现代软件开发存在的问题 6

    1.4.1 技术繁多 8 

    1.4.2 遍阅范式 8 

    1.4.3 科技黑箱 9 

    1.4.4 低估开销 10 

    1.4.5 自扫门前雪 10 

    1.4.6 憎恶重复 11 

    1.5 特别说明 11

    1.6 本书主题 11

    本章总结 12

    第 2 章 实用的理论 13

    2.1 算法速成 14

    2.1.1 要有好的 Big-O 16 

    2.2 深入数据结构 17

    2.2.1 字符串 18 

    2.2.2 数组 21 

    2.2.3 列表 22 

    2.2.4 链表 23 

    2.2.5 队列 24 

    2.2.6 字典 24 

    2.2.7 哈希集合 26 

    2.2.8 栈 26 

    2.2.9 调用栈 27 

    2.3 类型有大用 28

    2.3.1 使用强类型 28 

    2.3.2 有效性证明 29 

    2.3.3 巧用框架 34 

    2.3.4 用类型防止打错字 37 

    2.3.5 null 的可与不可 38 

    2.3.6 免费的更好性能 44 

    2.3.7 引用类型与值类型 45 

    本章总结 48

    第 3 章 有用的反模式 50

    3.1 若无损坏,亦可破坏 51

    3.1.1 面对代码刚性 51 

    3.1.2 快刀斩乱麻 52 

    3.1.3 敬畏边界 53 

    3.1.4 隔离相同功能 54 

    3.1.5 网页示例 56 

    3.1.6 不要留下技术债 57 

    3.2 从头开始写 57

    推倒重写 58 

    3.3 修复它,即使它没有坏掉 59

    3.3.1 奔向未来 59 

    3.3.2 整洁仅次于功能 60 

    3.4 重复你自己 62

    复用还是直接复制? 66 

    3.5 是我所创 67

    3.6 不要使用继承 70

    3.7 不要使用类 72

    3.7.1 enum 太好用了! 72 

    3.7.2 结构体真棒! 74 

    3.8 写点糟糕代码 79

    3.8.1 不要使用 If/Else 79 

    3.8.2 使用 goto 81 

    3.9 不写代码注释 84

    3.9.1 选个好名字 85 

    3.9.2 充分利用函数 86 

    本章总结 88

    第 4 章 美味的测试 89

    4.1 测试的类型 90

    4.1.1 手动测试 90 

    4.1.2 自动化测试 91 

    4.1.3 执意玩火:在生产环境中测试 91 

    4.1.4 选择正确的测试方法 92 

    4.2 如何停止抱怨,爱上测试? 94

    4.3 不要使用 TDD 或其他缩写 100

    4.4 为你自己的目的写测试 101

    4.5 决定测试对象 102

    4.5.1 尊重边界 103 

    4.5.2 代码覆盖率 105 

    4.6 不要写测试 107

    4.6.1 不要写代码 107 

    4.6.2 不要一次写完所有的测试 107 

    4.7 让编译器测试你的代码 108

    4.7.1 消除 null 检查 108 

    4.7.2 消除范围检查 111 

    4.7.3 消除有效值检查 113 

    4.8 命名测试 115

    本章总结 116

    第 5 章 正名重构 117

    5.1 为什么我们要重构? 118

    5.2 架构修改 118

    5.2.1 识别组件 121 

    5.2.2 评估工作量和风险 122 

    5.2.3 树立威信 122 

    5.2.4 重构让重构更容易 124 

    5.2.5 最后冲刺 130 

    5.3 可靠重构 130

    5.4 什么时候不重构 132

    本章总结 133

    第 6 章 安全审查 134

    6.1 黑客之外 135

    6.2 威胁模型 136

    袖珍威胁模型 137 

    6.3 编写安全的网络应用程序 140

    6.3.1 在设计时考虑到安全问题 140 

    6.3.2 隐蔽性安全的用处 141 

    6.3.3 不要光靠你自己去实现安全 142 

    6.3.4 SQL 注入攻击 142 

    6.3.5 跨站脚本攻击 148 

    6.3.6 跨站请求伪造 152 

    6.4 引发第 一次“洪水” 153

    6.4.1 不要使用验证码 153 

    6.4.2 验证码的代替品 154 

    6.4.3 不要使用缓存 155 

    6.5 存储机密信息 155

    保存源代码中的机密信息 156 

    本章总结 161

    第 7 章 死磕优化 163

    7.1 解决该解决的问题 164

    7.1.1 简单的基准测试 164 

    7.1.2 性能与响应性 167 

    7.2 迟缓的剖析 168

    7.3 从头开始 169

    7.3.1 嵌套循环 170 

    7.3.2 面向字符串的编程 172 

    7.3.3 评估 173 

    7.4 打破瓶颈 174

    7.4.1 不要打包数据 174 

    7.4.2 就地取材 175 

    7.4.3 将依赖性工作分开 176 

    7.4.4 要有可预测性 177 

    7.4.5 SIMD 179 

    7.5 I/O 的 1 秒与 0 秒 181

    7.5.1 让 I/O 更快 181 

    7.5.2 避免 I/O 阻塞 183 

    7.5.3 古老的方式 184 

    7.5.4 现代式 async/await 185 

    7.5.5 异步 I/O 的弊端 186 

    7.6 如果所有方法都失败了,试试缓存吧 187

    本章总结 187

    第 8 章 可口扩展 188

    8.1 不要使用锁 189

    双重检查的锁 195 

    8.2 拥抱不一致 198

    可怕的 NOLOCK 198 

    8.3 不要缓存数据库连接 200

    以 ORM 的形式 203 

    8.4 不要使用线程 203

    8.4.1 异步代码的问题 207 

    8.4.2 异步多线程 208 

    8.5 尊重单体 208

    本章总结 209

    第 9 章 与 bug 共存 210

    9.1 不要修复 bug 211

    9.2 错误恐惧 212

    9.2.1 有关异常的真相 213 

    9.2.2 不要捕捉异常 215 

    9.2.3 容异性 217 

    9.2.4 没有事务的容异性 221 

    9.2.5 异常与错误 221 

    9.3 不要调试 223

    9.3.1 printf()调试法 224 

    9.3.2 初识转储 225 

    9.3.3 高阶小黄鸭调试法 228 

    本章总结 228
  • 内容简介:
    本书专注于介绍项目开发领域的实战方法和高效范式,共 9 章,从预备理论知识开始,按照业务开发的真实流程详细阐述了以往开发的经验误区,并结合实际的.NET 和 C#代码,给出经过大量项目检验的解决方案。
      本书绝不是市面上随处可见的技术手册。作者用他独有的幽默感和数十年的软件开发经验,将软件开发的实战故事一一道来。
      正如作者所言,无论你是非科班出身的开发者,还是已经入行几年的开发“上道人”,本书都能对你有所裨益。
  • 作者简介:
    塞达特 ? 卡帕诺格鲁(Sedat Kapano?lu),一名自学成才的软件开发工程师,来自土耳其的埃斯基谢希尔。他曾入职美国华盛顿州西雅图的微软公司,担任 Windows 核心操作系统工程师。他的专业软件开发生涯长达 30 年。

    塞达特创建了土耳其倍受欢迎的社交平台——酸字典(Ek?i S?zlük)。在 20 世纪 90年代,他活跃于土耳其的国际数字艺术社区 demoscence,其主题是利用代码生成图形和音乐。
  • 目录:
    第 1 章 初入行当 1

    1.1 在实战中,什么最重要? 2

    1.2 谁是实战程序员? 3

    1.3 杰出实战程序员 4

    1.3.1 懂得质疑 4 

    1.3.2 结果驱动 5 

    1.3.3 高产出 6 

    1.3.4 接受复杂性和模糊性 6 

    1.4 现代软件开发存在的问题 6

    1.4.1 技术繁多 8 

    1.4.2 遍阅范式 8 

    1.4.3 科技黑箱 9 

    1.4.4 低估开销 10 

    1.4.5 自扫门前雪 10 

    1.4.6 憎恶重复 11 

    1.5 特别说明 11

    1.6 本书主题 11

    本章总结 12

    第 2 章 实用的理论 13

    2.1 算法速成 14

    2.1.1 要有好的 Big-O 16 

    2.2 深入数据结构 17

    2.2.1 字符串 18 

    2.2.2 数组 21 

    2.2.3 列表 22 

    2.2.4 链表 23 

    2.2.5 队列 24 

    2.2.6 字典 24 

    2.2.7 哈希集合 26 

    2.2.8 栈 26 

    2.2.9 调用栈 27 

    2.3 类型有大用 28

    2.3.1 使用强类型 28 

    2.3.2 有效性证明 29 

    2.3.3 巧用框架 34 

    2.3.4 用类型防止打错字 37 

    2.3.5 null 的可与不可 38 

    2.3.6 免费的更好性能 44 

    2.3.7 引用类型与值类型 45 

    本章总结 48

    第 3 章 有用的反模式 50

    3.1 若无损坏,亦可破坏 51

    3.1.1 面对代码刚性 51 

    3.1.2 快刀斩乱麻 52 

    3.1.3 敬畏边界 53 

    3.1.4 隔离相同功能 54 

    3.1.5 网页示例 56 

    3.1.6 不要留下技术债 57 

    3.2 从头开始写 57

    推倒重写 58 

    3.3 修复它,即使它没有坏掉 59

    3.3.1 奔向未来 59 

    3.3.2 整洁仅次于功能 60 

    3.4 重复你自己 62

    复用还是直接复制? 66 

    3.5 是我所创 67

    3.6 不要使用继承 70

    3.7 不要使用类 72

    3.7.1 enum 太好用了! 72 

    3.7.2 结构体真棒! 74 

    3.8 写点糟糕代码 79

    3.8.1 不要使用 If/Else 79 

    3.8.2 使用 goto 81 

    3.9 不写代码注释 84

    3.9.1 选个好名字 85 

    3.9.2 充分利用函数 86 

    本章总结 88

    第 4 章 美味的测试 89

    4.1 测试的类型 90

    4.1.1 手动测试 90 

    4.1.2 自动化测试 91 

    4.1.3 执意玩火:在生产环境中测试 91 

    4.1.4 选择正确的测试方法 92 

    4.2 如何停止抱怨,爱上测试? 94

    4.3 不要使用 TDD 或其他缩写 100

    4.4 为你自己的目的写测试 101

    4.5 决定测试对象 102

    4.5.1 尊重边界 103 

    4.5.2 代码覆盖率 105 

    4.6 不要写测试 107

    4.6.1 不要写代码 107 

    4.6.2 不要一次写完所有的测试 107 

    4.7 让编译器测试你的代码 108

    4.7.1 消除 null 检查 108 

    4.7.2 消除范围检查 111 

    4.7.3 消除有效值检查 113 

    4.8 命名测试 115

    本章总结 116

    第 5 章 正名重构 117

    5.1 为什么我们要重构? 118

    5.2 架构修改 118

    5.2.1 识别组件 121 

    5.2.2 评估工作量和风险 122 

    5.2.3 树立威信 122 

    5.2.4 重构让重构更容易 124 

    5.2.5 最后冲刺 130 

    5.3 可靠重构 130

    5.4 什么时候不重构 132

    本章总结 133

    第 6 章 安全审查 134

    6.1 黑客之外 135

    6.2 威胁模型 136

    袖珍威胁模型 137 

    6.3 编写安全的网络应用程序 140

    6.3.1 在设计时考虑到安全问题 140 

    6.3.2 隐蔽性安全的用处 141 

    6.3.3 不要光靠你自己去实现安全 142 

    6.3.4 SQL 注入攻击 142 

    6.3.5 跨站脚本攻击 148 

    6.3.6 跨站请求伪造 152 

    6.4 引发第 一次“洪水” 153

    6.4.1 不要使用验证码 153 

    6.4.2 验证码的代替品 154 

    6.4.3 不要使用缓存 155 

    6.5 存储机密信息 155

    保存源代码中的机密信息 156 

    本章总结 161

    第 7 章 死磕优化 163

    7.1 解决该解决的问题 164

    7.1.1 简单的基准测试 164 

    7.1.2 性能与响应性 167 

    7.2 迟缓的剖析 168

    7.3 从头开始 169

    7.3.1 嵌套循环 170 

    7.3.2 面向字符串的编程 172 

    7.3.3 评估 173 

    7.4 打破瓶颈 174

    7.4.1 不要打包数据 174 

    7.4.2 就地取材 175 

    7.4.3 将依赖性工作分开 176 

    7.4.4 要有可预测性 177 

    7.4.5 SIMD 179 

    7.5 I/O 的 1 秒与 0 秒 181

    7.5.1 让 I/O 更快 181 

    7.5.2 避免 I/O 阻塞 183 

    7.5.3 古老的方式 184 

    7.5.4 现代式 async/await 185 

    7.5.5 异步 I/O 的弊端 186 

    7.6 如果所有方法都失败了,试试缓存吧 187

    本章总结 187

    第 8 章 可口扩展 188

    8.1 不要使用锁 189

    双重检查的锁 195 

    8.2 拥抱不一致 198

    可怕的 NOLOCK 198 

    8.3 不要缓存数据库连接 200

    以 ORM 的形式 203 

    8.4 不要使用线程 203

    8.4.1 异步代码的问题 207 

    8.4.2 异步多线程 208 

    8.5 尊重单体 208

    本章总结 209

    第 9 章 与 bug 共存 210

    9.1 不要修复 bug 211

    9.2 错误恐惧 212

    9.2.1 有关异常的真相 213 

    9.2.2 不要捕捉异常 215 

    9.2.3 容异性 217 

    9.2.4 没有事务的容异性 221 

    9.2.5 异常与错误 221 

    9.3 不要调试 223

    9.3.1 printf()调试法 224 

    9.3.2 初识转储 225 

    9.3.3 高阶小黄鸭调试法 228 

    本章总结 228
查看详情
相关图书 / 更多
程序员的制胜技
程序员超强大脑
[荷兰]费莉安·赫尔曼斯(Felienne Hermans)
程序员的制胜技
程序员考前突破:考点精讲、真题精解、难点精练
詹宏锋 李锋 许纪贤 编著
程序员的制胜技
程序员的README
[美]克里斯·里科米尼(Chris Riccomini) (美) 德米特里·里
程序员的制胜技
程序设计基础(C语言)(第3版)
刘明军 袁宁 张玲 蒋彦 赵亚欧 编著;潘玉奇 主编;蔺永政
程序员的制胜技
程序辩护精要
王学明
程序员的制胜技
程序设计基础(Python语言)(微课视频版)
陈守森;刘衍琦;邵燕;张言上;任爱华
程序员的制胜技
程序设计算法基础
于瑞国 主编;赵满坤 副主编;喻梅;李雪威
程序员的制胜技
程序员的算法趣题2
[日]增井敏克
程序员的制胜技
程序性能优化理论与方法
韩林;高伟
程序员的制胜技
程序设计基础实验和学习指导(C语言)(微课版)
苏小红 张羽 袁永峰 李东
程序员的制胜技
程序设计基础(C语言)习题集与实验指导(第3版)
蒋彦 袁宁 张玲 赵亚欧 编著;潘玉奇 主编;蔺永政
程序员的制胜技
程序设计基础(C语言)教程
刘媛媛;雷莉霞;胡平
您可能感兴趣 / 更多
程序员的制胜技
《看不见的窗》(2024年百班千人寒假书单 二年级推荐阅读)
[土耳其]圭克尼尔·厄兹阙克
程序员的制胜技
黑书(诺奖得主帕慕克极致野心之作,小说版《伊斯坦布尔》)
[土耳其]奥尔罕·帕慕克
程序员的制胜技
我能听到你的歌声 3-7岁 大胆地去做自己吧,总有人能够理解你,也愿意理解你
[土耳其]格克切·格克塞尔 著;[土耳其]乌谷尔·阿尔顿 绘
程序员的制胜技
别怕,小霸鱼!3-7岁 一本能够让孩子认识到什么是霸凌,同时学会对霸凌说“不”的绘本
[土耳其]布什拉·塔尔察尔·埃罗尔 著;[土耳其]乌谷尔·阿尔顿 绘
程序员的制胜技
神奇的“你好!”
[土耳其]尼汗·特米兹 著;张弘 译;[土耳其]布尔库·耶尔马兹 绘
程序员的制胜技
新民说·经济学好实用:如果没有被误读的话(《经济学人》2015年度好书,《金融时报》推荐读物!原《经济学规则》)
[土耳其]丹尼·罗德里克(Dani Rodrik)
程序员的制胜技
象博士的科普日记
[土耳其]法提赫·迪克曼(Fatih Dikmen)
程序员的制胜技
离世猫的花园 卡拉素 文学童话寓言外国小说
[土耳其]比尔盖·卡拉素
程序员的制胜技
会播种的帽子 告诉你每个月应该吃什么蔬果、怎么吃最美味, 培养孩子顺应时节的饮食习惯和意识
[土耳其]西玛·奥兹坎
程序员的制胜技
“感知力”系列绘本(全3册)
[土耳其]古尔莎·也门 江亦纯
程序员的制胜技
向上一步 : 硅谷创投女王的精神和物质双独立法则
[土耳其]玛格达琳娜·耶希尔 后浪
程序员的制胜技
猜一猜,数一数
[土耳其]穆拉·塞勒普