计算机
类型
可以朗读
语音朗读
217千字
字数
2023-09-01
发行日期
展开全部
主编推荐语
一本新手程序员的生存指南,教你如何将理论转化为实践技能。
内容简介
本书专注于介绍项目开发领域的实战方法和高效范式。全书共9章,从预备理论知识开始,按照业务开发的真实流程详细阐述了以往开发的经验误区,并结合实际的.NET和C#代码,给出经过大量项目检验的解决方案。
作者用他独有的幽默感和数十年的软件开发经验,将软件开发的实战故事一一道来。正如作者所言,无论你是非科班出身的开发者,还是已经入行几年的开发“上道人”,本书都能对你有所裨益。
目录
- 版权信息
- 内容提要
- 译者介绍
- 译者序
- 序
- 致谢
- 关于本书
- 关于作者
- 关于封面插图
- 资源与支持
- 第1章 初入行当
- 1.1 在实战中,什么最重要?
- 1.2 谁是实战程序员?
- 1.3 杰出实战程序员
- 1.3.1 懂得质疑
- 1.3.2 结果驱动
- 1.3.3 高产出
- 1.3.4 接受复杂性和模糊性
- 1.4 现代软件开发存在的问题
- 1.4.1 技术繁多
- 1.4.2 遍阅范式
- 1.4.3 科技黑箱
- 1.4.4 低估开销
- 1.4.5 自扫门前雪
- 1.4.6 憎恶重复
- 1.5 特别说明
- 1.6 本书主题
- 本章总结
- 第2章 实用的理论
- 2.1 算法速成
- 要有好的Big-O
- 2.2 深入数据结构
- 2.2.1 字符串
- 2.2.2 数组
- 2.2.3 列表
- 2.2.4 链表
- 2.2.5 队列
- 2.2.6 字典
- 2.2.7 哈希集合
- 2.2.8 栈
- 2.2.9 调用栈
- 2.3 类型有大用
- 2.3.1 使用强类型
- 2.3.2 有效性证明
- 2.3.3 巧用框架
- 2.3.4 用类型防止打错字
- 2.3.5 null的可与不可
- 2.3.6 免费的更好性能
- 2.3.7 引用类型与值类型
- 本章总结
- 第3章 有用的反模式
- 3.1 若无损坏,亦可破坏
- 3.1.1 面对代码刚性
- 3.1.2 快刀斩乱麻
- 3.1.3 敬畏边界
- 3.1.4 隔离相同功能
- 3.1.5 网页示例
- 3.1.6 不要留下技术债
- 3.2 从头开始写
- 推倒重写
- 3.3 修复它,即使它没有坏掉
- 3.3.1 奔向未来
- 3.3.2 整洁仅次于功能
- 3.4 重复你自己
- 复用还是直接复制?
- 3.5 是我所创
- 3.6 不要使用继承
- 3.7 不要使用类
- 3.7.1 enum太好用了!
- 3.7.2 结构体真棒!
- 3.8 写点糟糕代码
- 3.8.1 不要使用If/Else
- 3.8.2 使用goto
- 3.9 不写代码注释
- 3.9.1 选个好名字
- 3.9.2 充分利用函数
- 本章总结
- 第4章 美味的测试
- 4.1 测试的类型
- 4.1.1 手动测试
- 4.1.2 自动化测试
- 4.1.3 执意玩火:在生产环境中测试
- 4.1.4 选择正确的测试方法
- 4.2 如何停止抱怨,爱上测试?
- 4.3 不要使用TDD或其他缩写
- 4.4 为你自己的目的写测试
- 4.5 决定测试对象
- 4.5.1 尊重边界
- 4.5.2 代码覆盖率
- 4.6 不要写测试
- 4.6.1 不要写代码
- 4.6.2 不要一次写完所有的测试
- 4.7 让编译器测试你的代码
- 4.7.1 消除null检查
- 4.7.2 消除范围检查
- 4.7.3 消除有效值检查
- 4.8 命名测试
- 本章总结
- 第5章 正名重构
- 5.1 为什么要重构?
- 5.2 架构修改
- 5.2.1 识别组件
- 5.2.2 评估工作量和风险
- 5.2.3 树立威信
- 5.2.4 重构让重构更容易
- 5.2.5 最后冲刺
- 5.3 可靠重构
- 5.4 什么时候不重构
- 本章总结
- 第6章 安全审查
- 6.1 黑客之外
- 6.2 威胁模型
- 袖珍威胁模型
- 6.3 编写安全的网络应用程序
- 6.3.1 在设计时考虑到安全问题
- 6.3.2 隐蔽性安全的用处
- 6.3.3 不要光靠你自己去实现安全
- 6.3.4 SQL注入攻击
- 6.3.5 跨站脚本攻击
- 6.3.6 跨站请求伪造
- 6.4 引发第一次“洪水”
- 6.4.1 不要使用验证码
- 6.4.2 验证码的代替品
- 6.4.3 不要使用缓存
- 6.5 存储机密信息
- 保存源代码中的机密信息
- 本章总结
- 第7章 死磕优化
- 7.1 解决该解决的问题
- 7.1.1 简单的基准测试
- 7.1.2 性能与响应性
- 7.2 迟缓的剖析
- 7.3 从头开始
- 7.3.1 嵌套循环
- 7.3.2 面向字符串的编程
- 7.3.3 评估
- 7.4 打破瓶颈
- 7.4.1 不要打包数据
- 7.4.2 就地取材
- 7.4.3 将依赖性工作分开
- 7.4.4 要有可预测性
- 7.4.5 SIMD
- 7.5 I/O的1秒与0秒
- 7.5.1 让I/O更快
- 7.5.2 避免I/O阻塞
- 7.5.3 古老的方式
- 7.5.4 现代式async/await
- 7.5.5 异步I/O的弊端
- 7.6 如果所有方法都失败了,试试缓存吧
- 本章总结
- 第8章 可口的扩展
- 8.1 不要使用锁
- 双重检查的锁
- 8.2 拥抱不一致
- 可怕的NOLOCK
- 8.3 不要缓存数据库连接
- 以ORM的形式
- 8.4 不要使用线程
- 8.4.1 异步代码的问题
- 8.4.2 异步多线程
- 8.5 尊重单体
- 本章总结
- 第9章 与bug共存
- 9.1 不要修复bug
- 9.2 错误恐惧
- 9.2.1 有关异常的真相
- 9.2.2 不要捕捉异常
- 9.2.3 容异性
- 9.2.4 没有事务的容异性
- 9.2.5 异常与错误
- 9.3 不要调试
- 9.3.1 printf()调试法
- 9.3.2 初识转储
- 9.3.3 高阶小黄鸭调试法
- 本章总结
展开全部
出版方
人民邮电出版社
人民邮电出版社是工业和信息化部主管的大型专业出版社,成立于1953年10月1日。人民邮电出版社坚持“立足信息产业、面向现代社会、传播科学知识、服务科教兴国”,致力于通信、计算机、电子技术、教材、少儿、经管、摄影、集邮、旅游、心理学等领域的专业图书出版。