• 代码简洁之道(二)


    数据、对象的反对称性

    • 数据结构、对象或者说具体、抽象的本质区别在于是否暴露数据细节。
    • 过程式代码便于添加新函数,不便于添加新数据结构。对象式代码便于添加新类,不便于添加新函数

    错误处理

    • 封装第三方类同时封装其catch异常
    • 不要返回、传递null

    边界

    • 慎用类似map等可以使用泛型的接口 ap sensors = new HashMap(); Sensor s = sensors.get(sensorId ); 建议替换为 public class Sensors { private Map sensors = new HashMap(); public Sensor getById(String id) { return (Sensor) sensors.get(id); } //snip }
    • 学习性测试,通过测试驱动了解第三方库
    • 为尚未开发的代码预留接口,如适配器模式

    单元测试

    • 只编写刚好失败的单元测试
    • 整洁
    • 一个测试一个概念

    系统

    没看懂

    迭进

    • 运行所有测试
    • 不可重复。可以用模板类消除明显的重复
    • 注意代码的表达力
    • 使用恰当数量的类和方法

    并发编程

    • 单一权责,分离不需要并发的代码
    • 限制数据作用域,严格限制共享数据的访问
    • 使用数据副本
    • 线程尽可能独立
    • 多了解并发类
    • 了解并发的执行模式:限定资源,互斥,线程饥饿,死锁,活锁
    • 常用基础算法–生产者、消费者;读者、作者;宴席哲学家
    • 避免使用一个共享对象的多个方法,可以:基于客户端锁定,基于服务端锁定,适配服务端
    • 尽可能缩小同步区
    • 尽早考虑关闭系统的问题,因为有各种可能会死锁
    • 编写可插拔,可调整的线程代码,运行多于处理器数量的线程,在不同平台上运行,强迫错误发生。在不同的编程配置,系统配置,负载下频繁运行。
    • java中装置试错代码 没看懂
  • 相关阅读:
    378. Kth Smallest Element in a Sorted Matrix
    372. Super Pow
    357. Count Numbers with Unique Digits
    345. Reverse Vowels of a String
    343. Integer Break
    347. Top K Frequent Elements
    344. Reverse String
    338. Counting Bits
    326. Power of Three
    python练习
  • 原文地址:https://www.cnblogs.com/lijianming180/p/12255813.html
Copyright © 2020-2023  润新知