命名

    1. 正确: device-manager 错误: deviceManager

    2. 类名首字母大写,使用驼峰命名.

      正确: DeviceInstance 错误: Deviceinstance , Device_Instance

    3. 方法名首字母小写,使用驼峰命名. 名称要见名知义.

      正确: findById(String id), deployDeviceInstance(List<String>deviceInstanceIdList) 错误: getData(String arg)

    4. 正确: String deviceId = device.getId(); 错误: String str = device.getId();

    5. 常量使用大写,多个单词使用_分割.

      正确: static String DEFAULT_CONFIG = “1”; 错误: static String DEFAULTCONFIG = “1”;

    一个模块在需要提供给其他模块使用时,应该面向接口编程,对外提供相应的接口.并在当前模块提供默认的实现.

    当一个模块是具体的业务功能实现时,大部分情况不需要写接口,如一个增删改查功能 不需要针对 Service 写一个接口.

    URL使用小写,多个单词使用-或者/分割,如:device-info,logger/system.通常情况下应该使用URL来描述资源, 使用HTTP METHOD(,POST 新增,PUT 修改,PATCH 修改不存在则新增,DELETE 删除)来描述对资源的操作. 在一些特殊操作无法使用HTTP METHOD来描述操作的时候,使用_开头加动词来描述,如: device/_query

    响应式

    JetLinks 使用全响应式(reactor (opens new window))编程.

    1. 所有可能涉及到IO或者异步操作(,数据库操作,文件操作)的方法,返回值全部为Mono或者Flux.

    2. 响应式方法间调用,应该组装为同一个Publisher.

      正确: return deviceService .findById(id) .flatMap(device->this.syncDeviceState(device));

      错误: deviceService .findById(id) .subscribe(device->this.syncDeviceState(device).subscribe())

      错误: this.syncDeviceState(deviceService.findById(id).block()).subscribe();

    相关资料:

    1. project-reactor (opens new window)
    2. simviso视频教程 (opens new window)