`
jbm3072
  • 浏览: 211507 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

关于编码的若干最佳实践

阅读更多

 

昨天XX面试时,一道这样的问题难住了我,就是:在这么多年的编码中,说说自己的最佳实践。当时懵掉了,虽然看过很多敏捷开发、代码清洁之道、代码大全这些关于最佳实践的书,但却一条也说不出来。趁现在有时间,想想这个问题,总结一下自己的代码最佳实践。

 

  1. 一致的代码格式
  2. 形成自己的工具类开发时,为了减少代码量,多使用第三方的类库,如Apache Commons等,里面提供了简化操作的类。形成自己的工具类目标是简化代码开发,对一些通用功能进行封装。
  3. 业务逻辑与技术实现相分离. 如果一个函数或者一个类主要用来描述业务逻辑实现,那么最好不要在该方法有过多的技术细节实现。例如注册读者的功能,检查有效性、插入到数据库、发送邮件等这些算是业务逻辑。而针对每一个业务逻辑的技术实现细节最好和业务逻辑实现分开。这样使代码更加清晰。
  4. 保持类和函数的短小,尽量提取可复用组件或者函数类短小,可以控制类的单一功能和类的简单性。越简单越有助于重用。编写代码时,对每个代码段考虑这个代码段会重复出现吗?重复出现时,哪些参数需要变化?该怎么抽象这段代码呢?
  5. 用设计模式去思考要解决的问题。而不是用流程去思考问题。
  6. 优先使用组合,而非继承。继承意味着会给新建类带来新的方法,这些方法真的适用于这个新建的类吗?
  7. 编写类时,应考虑这个类会不会在多线程下使用,如果在多线程环境下会不会有问题,如果有问题,该怎么解决。
  8. 慎用StringBuffer/Vector/HashTable这些类尽管在多线程下没有问题,但在单线程环境下可能效率不高。在单线程环境下,使用StringBuilder/ArrayList/HashMap.如果是多线程环境,考虑使用JCF中的同步类。
  9. 变量名、函数名、类名表意。写出来的代码要达到不用注释就能看懂。
  10. 命名时,避免使用类似ReaderInfoReaderClass这样的类名InfoClass 是语义的重复,无需在命名时使用。
  11. 边开发边重构。写代码时,如果发现有些不妥的地方,要及时重构和修改、测试。有时会想,先做完再重构,忘掉这种想法。这种想法不可取。越往后拖,越不易重构,越懒得重构。
  12. 应考虑写出的代码可能面临的性能问题。使用这个类合适吗?有更简单更有效的代码改进吗?循环的结构修改一下会不会会提高效率,要不要定义临时变量或者状态字段存储处理结果以减少多次运算?……
  13. 常见的类名前缀或者后缀Simple***Default***, ***ServiceProvider***Utils, ***Templage, ***Template , ***Model***Factory, ****Adapter .接口在声明是多使用***able,表示实现类具有该能力,如Runable,Configurable,Customizable Imutable 等等。而实现类的声明多使用***Runner,****Configuration等名词结构。

 

目前暂时想到了这么多,以后想到了再补充。

分享到:
评论

相关推荐

    视频编码测试序列.zip

    "视频编码测试序列.zip"这个压缩包显然包含了若干用于测试的视频片段,适用于那些想要熟悉或优化HEVC(High Efficiency Video Coding)和H.264这两种编码标准的新手。 HEVC,全称为高效率视频编码,是目前广泛采用...

    h263方式编码和解码程序

    2. **块运动估计**:将视频画面分割成若干个宏块,对每个宏块进行运动估计,找出最佳匹配的参考块,以此来减少需要传输的信息。 3. **离散余弦变换(DCT)**:将空间域的像素值转换到频率域,高频成分被忽略或量化...

    基于时空冗余及不等错误保护的分布式多视点视频编码容错传输.pdf

    这可能涉及研究最新的学术文献、参考最新的技术标准和行业规范,以及实际操作中的最佳实践。 综上所述,本文档的知识点涉及到分布式多视点视频编码、时空冗余技术、不等错误保护策略、容错传输机制、分布式系统的...

    对Oracle数据库字符集若干问题的探讨.pdf

    黄健泉的文章《对Oracle数据库字符集若干问题的探讨》深入分析了Oracle数据库中广泛使用的中文字符集和Unicode字符集。Unicode是一种国际标准,旨在统一世界上所有的字符编码,包括各种语言的字母、数字和符号,确保...

    软件工程实践(思维导图)学习笔记

    生命周期方法学是一种将软件开发过程分成若干个阶段的方法,通常包括需求分析、设计、编码、测试和维护等阶段。这种方法强调每个阶段都要完成严格的评审,并根据评审结果进行必要的返工,才能进入下一阶段。这种分...

    阿里巴巴代码规范-泰山版.pdf

    综上所述,阿里巴巴代码规范泰山版是一份全面、细致的Java编程指南,它不仅提供了编程规范和最佳实践,还致力于培养开发者的职业素养,推动软件开发团队之间的协作,以期达到编写出更高效、更高质量代码的目标。

    [详细完整版]软件工程编码.ppt

    - **遵循最佳实践**:例如,使用面向对象的设计模式、避免全局变量等。 - **代码审查**:定期进行代码审查,以确保代码质量。 综上所述,结构化程序设计、程序设计风格以及程序效率是软件开发过程中不可或缺的关键...

    celp编解码(matlab)

    LPC分析首先找到一个系数序列,使得当前样本可以通过过去若干样本的线性组合得到最佳预测。MATLAB中的`lpc()`函数可以用于计算这些预测系数。 **三、编码过程** 1. **预处理**:包括采样率转换、预加重等步骤,改善...

    Lattice公司推荐的可综合HDL代码要点

    4. 有限状态机(FSM)的编码风格:提供了针对FSM的编码最佳实践。 5. 使用流水线:流水线技术的使用可以提高设计的性能,并改善时序。 6. 比较IF语句和CASE语句:在某些情况下,IF语句可能比CASE语句更高效,反之...

    C#代码规范(微软内部资料).docx

    编码阶段遵循特定的编码标准,确保代码清晰、易读且符合最佳实践: - **编码阶段**:在这个阶段,开发者根据设计文档编写C#代码。规范可能涵盖命名约定、注释标准、异常处理、类型使用、内存管理等方面。 - **...

    学习 TensorFLow 线性&逻辑回归 多层感知机 神经网络 自编码 循环神经网络 优化记录.zip

    1. 线性回归:线性回归是最基础的预测模型,通过找到输入变量(特征)和输出变量(目标)之间的最佳线性关系来预测结果。在 TensorFlow 中,可以利用 `tf.Variable` 定义权重和偏置,然后通过梯度下降法或优化器(如...

    commons-codec1.11到1.13

    4. **最佳实践** - 选择版本:根据项目需求和所使用的Java版本,选择最适合的Apache Commons Codec版本。 - 异常处理:在进行编码解码操作时,应捕获并适当地处理可能出现的`CodecException`。 - 性能优化:大量...

    语音信号线性预测ppt 课件——赵晓群

    线性预测编码(Linear Predictive Coding,LPC)是一种基于统计模型的信号分析方法,它假设当前的信号样本可以由前面若干个样本的线性组合来预测。在语音信号处理中,这个模型通常用来描述声波的物理特性,即声波的...

    pcm.rar_PCM仿真

    例如,实际中如何根据信号特性选择合适的采样频率和量化精度,以达到最佳的编码效果和最小的数据存储或传输需求。 仿真中还可能涉及到一些更高级的概念,比如差错控制和信号压缩。虽然这些不是PCM编码的核心组成...

    Web GIS从基础到开发实践-基于ArcGIS API FOR JavaScript-高清-完整目录-2015年3月

    10. **性能优化与最佳实践**:开发Web GIS应用时,理解如何优化地图加载速度、合理使用缓存、控制图层可见性以及分块加载数据等技巧,对提升用户体验至关重要。 本教程详细阐述了以上知识点,并结合实例,帮助...

    企业级应用软件架构开发过程与实践2

    ### 企业级应用软件架构开发过程与实践2 #### 软件工程基本原理 **一、问题解决规律与工程学方法** 1. **问题解决的基本步骤:** - **识别与澄清问题:** 明确问题的具体内容,确定问题边界。 - **收集相关信息...

    H.264阅读笔记

    阅读这些笔记,你可以深入了解H.264编码流程,包括编码器如何选择最佳预测模式、如何执行运动补偿、如何进行熵编码等。同时,笔记可能还会介绍实际应用中的优化技巧,比如码率控制、自适应比特率调整等。 通过...

    阿里巴巴开发者规范-Java开发手册华山版v1.5.0.pdf

    强制规约是不容违反的硬性要求,推荐规约是建议遵守的最佳实践,而参考规约则是为了提供更多的信息和背景知识。手册还通过“说明”、“正例”和“反例”三个部分对规约进行了扩展解释,以帮助开发者更好地理解和应用...

Global site tag (gtag.js) - Google Analytics