分清对外的方法和对内的方法。使方法的调用不涉及方法逻辑不涉及public方法的修改,只涉及内部private方法的修改,这样之后要是需要优化代码的时候可以只在内部修改,调用方不用修改。所以写代码的时候不能急,先搞清楚逻辑。分清楚对象,使其面向对象,而不是面向过程。
写代码的时候涉及到外部的关联一定要再代码中备注出处。例如文档的话标出文档的地址,微信接口的话标出接口的链接。方便查找。
重写企业微信从springboot 到 springcloud时想到的项目结构:
接受请求——处理请求——传输数据
在写企业微信后台的时候,接受回调,由于!不需要立即实时性!
接受请求微服务:负责后台接受回调请求,把需要处理的数据保存到redis的list或set缓存,
处理请求微服务:一直运行一个线程用来获取redis中的缓存,并放到线程池中处理
传输数据微服务:如果需要给企业微信客户端发送消息就用此微服务
此结构好处就是避开了大量回调请求时整个服务器down掉。接受请求直接放回。各个服务互相不干扰。只通过redis来传输数据。职责区分开,处理不耦合。
例如:企业微信回调externaluserid和userid,接受请求微服务只把externaluserid和userid保存到redis便完成并关闭此次会话session。处理请求微服务一直读取redis缓存,缓存有数据发送externaluserid和userid到企业微信接口获取用户信息用来crud数据库。传输数据微服务也可以当做处理请求微服务,企业微信的关键字回复,从接受请求微服务获得用户信息和关键字,再在传输数据微服务中发送关键字回复。