公司写代码

   在公司中写代码有些长进:比如学习使用Cache,避免频繁从数据库中取数据,实现透明传输。很多需要注意的地方,更要理解底层逻辑,而不是断章取义。

  在公司的团队开发过程中,要注重团队的效率。出问题的部分往往都是参数没有传对。开发中,鲜有人去写api开发文档,很多需求都要找相应的开发人员,这时如果没有默契,将是非常耗时。自己也可以作为积累,去写一些api开发文档。

-----------------------8月13号---------

  解决问题是一种能力。解决问题首先我们要有思路,那么那就是去思考每个可能环境,有依据,有目的的去找。就像解开一个迷案。只有有了线索才能去破案。如果没有线索就要主动制造线索。比如在上传文件失败时,真正直接的错误日志被隐藏了,百度上搜了很多文章都没有答案,我猜想可能是文件大小有关系。于是换成一个不相干的小文件,就上传成功了。这就证明确实和文档大小相关。然后我们在直接掉上传文件的接口,就返回了明确的文件太大的错误信息,这次找bug的过程堪称典范。所欲遇到问题时要能自己分析,然后测试,实践找到原因。

  还有之前遇到的状态没有更新的偶现问题,这原来是异步的原因。学习多线程的时候就说了,多线程可能使运行接结果不同。

  还有,要动业务,知道你的数据是拿来干什么的。比如一个A字段的写入时机,很多服务是处理流程的,对于时序很重要,时序不对,整个数据流就是错的。比如商品数量和订单总额的顺序关系。

  这个是外包公司,真的太坏了。这里一点都不值得留恋,但是我又没有技术跳槽。现在mysql,redis都不怎么会用了。基本看业务代码,对于技术提升帮助很小。所以要想早点摆脱这里,就要不断的自我驱动,自我学习。所以在这里不仅仅是工作挣钱,还有每天进步一点点。还有那么远的路要走,我真的不能再浪费时间。

-----------------------9月8总结------------------------

  昨天项目组的版本上线,在匆忙的环境中遇到了很多问题,在同事的帮助下也解决了很多问题,现在总结一下。

  常规操作的熟练:1.使用新数据更新数据库,要求从性能考虑,不使用暴力方法,即先删除数据库中数据,然后插入所有数据,而是在程序中进行数据比对,然后增删。这里涉及到集合的交并集操作,准确来说是java语言中的交并集操作,这个使用for语句逐个比较也是可以的,但是不够优雅,其实可以借助于Set操作,其相当于一个过滤器,如removeAll方法非常好用,然后就是两个列表去重合并时要主要保持顺序。

  书本与实践结合的原则: 在处理一个集合时,对于没有元素的情况,我本能的返回null,但是老大在帮我codeReview的时候,告诉我不要返回null,而是空指针。这说明我的软件工程经验还是太少了。翻开《代码整洁之道》,就会看到与之关联的话题,不要返回null值,不要传入null值。如果存在这种情况,就要面对可能的空指针异常和null值判断,这明显是在增加工作量,所以在自己可控的范围内不要传入null,并且如果没有返回值时可以考虑抛出异常,直接失败。在这方面java还是有着良好的支持,如Collection.emptyList(),@NotNull,但是这个类没有重写add,remove方法,所以实际上是不能作为容器的。可以可以,软件工程要理论和实践相结合,多吸收别人的经验、

  常见问题的定位: 一个同事调用我的借口报错;data format is not correct。我看了一会儿没有看出来,同事很着急,觉得我很菜,然后看了半天,我发现是直接传List,而不是使用类似的hashMap。|回顾一下,自己根据这个提示,应该能马上定位到是参数格式不匹配,然后就能比对发现错误了。一个测试反映添加成员时第一发起人不对,也就是顺序不对。但是我明明是按照插入数据库的时间顺序排列的。为什么不对呢?还是老程序员有经验,经过尝试定位为插入时多个数据时间一样,在此插入时会导致排序不稳定。反过来想,这是一个很常见的问题,因为时间的精确度很有限,相同的插入时间可能出现,我在操作数据库是就发现很多记录时间一样,只是没有意识到该问题的存在。使用id排序问题就解决了。所以在对相同值排序时,一定要注意排序的稳定性,这是经验问题,要注意总结,没有经验,这种错误就是一层窗户纸,很难捅破。

  熟悉新的项目:换工作,换项目组有新的业务,了解新的业务对于做好工作很重要,否则就是瞎写代码,随机写代码,一点自己的思想都没有。在参考资料不多的情况下,可从如今方法增加对业务的了解:1.自己亲手用这个产品2.看swagger的api文档和数据库。

原文地址:https://www.cnblogs.com/Robin008/p/11129833.html