一些服务端写代码的规范,很重要

  对于设计的实现或者说代码的编写,有一些最基本的规则,或者说方法,现在梳理一下避免忘记。

  每个人的能力有差异,一个小组的水平参差不齐这就要求我们有些经验的总结,虽然是互联网公司

也要在快速迭代的同时保证程序的正确、方便验证、线上出问题快速定位问题,同时达到线上程序高可用,

可用性100%,性能优异。

一,项目建立

  1. 项目名称与实际业务名称一致为英文,易于后续维护理解。
  2. 项目结构采用经典spring结构模式,不做详细说明,可借鉴现有项目。
  3. 新项目建立依据实际业务,如业务为新增,可新建项目。
  4. 模块按照web、service、dao、common来设计。逻辑特别复杂的功能可通过包来进行规划。

二,编码原则

  1. 每个类只做一件事,所有的方法都应是和类直接相关的,和类没有关系的方法不应出现在类中。
  2. 单个方法代码行数避免过长,过长要进行拆分,一般长度建议在30行以内,特殊情况如方法只做一件事例如:初始化bean多个字段,可被允许。
  3. 代码日志要符合级别error在error输出,error一定要输出栈信息,logger.log(e.getmessage(),e),当出现问题能很快定位问题。error就是error出现了就是系统出现问题了,避免由于输出了很多非error信息错过真正error,对于中间件或通用性高级别的代码需要对error进行编号,以便能有程序方便对日志进行扫描统计。
  4. 单元测试使用原则,单元测试不能太细,太细会变得及其琐碎,一般的逻辑不建议编写测试用例,应在编码时保证逻辑是没问题的,太多的单元测试会导致浪费大量时间维护单元测试,得不偿失,复杂逻辑应单元测试,单元测试可以保证逻辑的正确性、完整性甚至还可以发现需求的完整性与合理性,合适的使用单元测试能保证逻辑正确,并能倒逼给出更好编码实现。
  5. 代码返回值的监控,对于100%线上可用系统很有必要,能够及时发现问题,避免问题出了不知道,需要下游提醒才知道。监控力度要准确合理。
  6. error线上代码应尽量避免抛异常,如抛异常应同时发报警,抛异常一般建议在jar包中使用,调用方可以根据异常进行报警或相应处理,可以保证返回结果不用考虑异常问题。
  7. 内存缓存的使用,要清楚了解每个配置项的意义,避免错误使用导致线上问题。
  8. 所有redis key要写常量文件里面,如程序生成要将整个项目的所有redis 取数逻辑写在一定地方。方便查找管理。
  9. 调用第三方接口要做异常检查以及通过ump对接口性能进行监控。
  10. 调用同一个redis的多个key,可以通过mget一次调用多个key,避免每个key一次调用,由于多次io导致性能变差,一次调用可显著提升性能。
  11. 第三方工具、组件使用时要尽量去详细了解,避免对工具、组件不了解引入问题。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏恰同学骚年

NoSQL初探之人人都爱Redis:(3)使用Redis作为消息队列服务场景应用案例

  “消息”是在两台计算机间传送的数据单位。消息可以非常简单,例如只包含文本字符串;也可以更复杂,可能包含嵌入对象。消息被发送到队列中,“消息队列”是在消息的传...

932
来自专栏北京马哥教育

Linux内存被吃掉了,它去哪里了?

在Windows下资源管理器查看内存使用的情况,如果使用率达到80%以上,再运行大程序就能感觉到系统不流畅了,因为在内存紧缺的情况下使用交换分区,频繁地从磁盘上...

882
来自专栏何俊林

Android app内存管理的16点建议

前言:内存管理,在iOS开发中和C++开发中可以说是天天提到。对于Android平台,Google其实早有文档说明,本文翻译自Google官方文档,如有不正确,...

2957
来自专栏数据和云

运维经验:回滚段异常的特殊救急方法

? 冷菠 冷菠,资深DBA,著有《Oracle高性能自动化运维》,有近10年的数据库运维、团队管理以及培训经验。擅长数据库备份恢复、数据库性能诊断优化以及数据...

2909
来自专栏风火数据

高级Java研发师在解决大数据问题上的一些技巧

众所周知, Java 在处理数据量比较大的时候,加载到内存必然会导致内存溢出,而在一些数据处理中我们不得不去处理海量数据,在做数据处理中,我们常见的手段是分解,...

702
来自专栏携程技术中心

干货 | Qunar全链路跟踪及Debug

作者简介 王克礼,去哪儿平台事业部基础架构Java开发工程师,参与开发和维护去哪儿内部中间件,包括配置中心、消息队列、日志收集及链路跟踪系统QTracer等。 ...

4716
来自专栏腾讯移动品质中心TMQ的专栏

win32应用程序性能测试-内存篇

本文主要讲述windows平台下应用程序性能测试的内存相关的知识,通过本文了解内存基本原理和分析内存占用问题。 一、内存是什么? 1内存分为物理内存和虚拟内存 ...

2108
来自专栏linux、Python学习

Linux吃掉了我的内存

在Windows下资源管理器查看内存使用的情况,如果使用率达到80%以上,再运行大程序就能感觉到系统不流畅了,因为在内存紧缺的情况下使用交换分区,频繁地从磁盘上...

1145
来自专栏PHP实战技术

Redis实现缓存,你应该懂的哪些思路!

场景一:类似于微博,实现关注和被关注功能。 思路: 对每个用户使用两个集合类型键,用来存储关注别人的用户和被该用户关注的用户。当用户A关注用户B的时候,执行两步...

3487
来自专栏菩提树下的杨过

rpc框架之HA/负载均衡构架设计

thrift、avro、grpc之类的rpc框架默认都没有提供负载均衡的实现,生产环境中如果server只有一台,显然不靠谱,于是有了下面的设计,这其实是前一阵...

2118

扫码关注云+社区