欢迎光临澳大利亚新华书店网 [登录 | 免费注册]

    • 程序员的制胜技
      • 作者:(土)塞达特·卡帕诺格鲁|责编:李瑾|译者:谈楚渝
      • 出版社:人民邮电
      • ISBN:9787115611567
      • 出版日期:2023/09/01
      • 页数:228
    • 售价:31.92
  • 内容大纲

        本书专注于介绍项目开发领域的实战方法和高效范式,共9章,从预备理论知识开始,按照业务开发的真实流程详细阐述开发中的经验误区,并结合实际的.NET和C#代码,给出经过大量项目检验的解决方案。
        本书绝对不是市面上随处可见的技术手册。作者用他独特的幽默感和数十年的软件开发经验,将软件开发的实战故事一一道来。
        正如作者所言,无论你是非科班出身的开发者,还是已经入行几年的开发“上道人”,本书都能对你有所裨益。
  • 作者介绍

        塞达特·卡帕诺格鲁,是一名自学成才的程序员,拥有超过25年的实战经验,曾就职于微软公司。
  • 目录

    第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  高阶小黄鸭调试法
      本章总结