吾日内省

11-13

  • 1.工作期间打开社交软件次数过多,需要优化到3次以下,前期寻求软件层面的控制,后期自制。
  • 2.写代码前需要做的几件事情:
    • 1.了解代码的上下文结构
    • 2.了解所调用 api 可能会返回的数据类型
    • 3.了解业务逻辑
    • 4.处理业务数据需要注意下面这些问题:
      • 1.了解数据表示的意义
      • 2.了解数据的消费方,以及修改后对消费方的影响。
      • 3.了解数据被处理前后的状态。

11-14

  • 1.写代码时,使用好 library 是一个非常能提高效率的事情,比如 guava 这个 google 的 java 工具库的使用:集合功能、参数检查、区间范围、字符串操作、缓存、各种工具方法、多线程等等。
  • 2.写代码就如同搭积木,对每个方法的入参需要了解其传入的可能性,了解了之后就需要使用一些工具对入参进行检查,如果不对就提早抛出问题,而不是等到后面某个地方抛出 exception。例如Preconditions。
  • 3.在想用一个工具代码的时候,遵循下面的搜索路径:search jdk ——> search guava—— >search others library ——> write you own

11-15

11-16

  • 1.protobuf 的 message get 的时候返回的不可能是 null,集合默认返回空,对象会返回默认对象

11-19

  • 1.工作注意力不够集中,效率不够高,需要找方法优化:
  • 2.23点之后工作学习效率低下,尽量做一些放松的事情比如看闲书看电影:达到要求,娱乐时间目前集中在23点以后
  • 3.编程时数据流需要清晰,确认数据处于某种状态之后(比如不为null),就不需要对其进行保护。只有确认为不确定的数据才需要保护。
  • 4.在写某个代码流程的时候(比如 canvas 绘制),整个流程的开始和结束要由一个 owner(可以是某个方法,或者类中配对的方法) 来操作。这个规则类似业务边界限制,能够有效解耦代码流程。防止代码流程的状态混乱。

11-26

  • 1.接手他人代码或进入一个成熟的项目写代码就如带着镣铐跳舞
    • 1.要遵循原有代码的设计,除非对代码非常熟悉,而且非常需要修改,不然不要另起炉灶。
    • 2.对于需要修改的部分,需要从数据结构入手,了解了数据结构代表的意义才能开始进行老代码的修改。
  • 2.大项目的开发,性能是很重要的点。可能开发之前运行的好好地,但是因为加的代码让性能差了一点,然后因为雪崩效应,就造成了整个 app 的 anr 或者 oom。注意以下事项
    • 1.开发的时候手机不能太好,太好的手机会掩盖很多问题,而这些问题在低端机型测试的时候就会暴露出来,之后就会造成在性能差的代码上面加补丁这种现象。结构差、性能差的代码需要在开始编码的时候就注意
    • 2.音视频开发中,除了网络请求和文件读取,还会使用到很多耗时长的 api,这些 api 在开发的时候一不注意就会在主线程调用。这也是需要极力避免的事情。

12-19 项目复盘

  • 1.改进
    • 1.在开始需求之前能了解到部分需求边界,这个比之前有进步。
    • 2.git 提交格式有改进
    • 3.不随意造轮子,能使用现有工具
  • 2.问题
    • 1.需求边界了解的不是很彻底,正式开始写代码之后有些 case 才被发现,这个需要持续改进
    • 2.如果不清楚所有已经被他人依赖了的代码的调用处的逻辑,那么就别去修改他,即使这个代码是有问题的。
    • 3.千万别在不了解业务的状态下优化代码,无论是代码结构还是代码性能。
    • 4.对于打日志,需要根据具体代码情境打相应级别的日志,不可一刀切只打 info 或者 debug。
    • 5.在开始写需求之前一定要花一定的时间确定代码的整体设计。这个设计需要能融入现有的代码体系,不可自起炉灶。
    • 6.如果上线前使用的测试环境的数据有问题,需要以线上环境的数据为标准,然后辅助以临时代码进行修正。千万别基于测试环境的数据进行代码的编写。
    • 7.数据与逻辑需要进行分离,切不可将逻辑与数据进行耦合。只要某个数据产生了,那么让逻辑配合数据,而不是数据配合逻辑。
    • 8.开发过程中,除非实在无法解决,否则不可临时写一个解决方案,然后期待后面解决。因为一旦代码写下了,那么后续就会有代码依赖,后面解决的成本永远比现在解决的成本高。
    • 9.时刻注意调用他人的 api时,其 api 需要处于的线程

2019年开始

01-07 项目复盘

  • 1.改进:
    • 1.需求开始前,能完整的整理出需求的流程
    • 2.需求开始前,能写技术文档
    • 3.需求开始前,能基本了解涉及的代码的逻辑
    • 4.不随意造轮子,用上了 guava
    • 5.没有再随意改动和优化老的逻辑
    • 6.review 后重写代码的量有减少
  • 2.问题:
    • 1.除非万不得已,千万不要定义一块在程序的生命周期内永远也释放不掉的内存,比如不被置空静态常量。要尽量让内存随着处理的逻辑走,或者使用弱引用这些可被回收的东西。
    • 2.使用观察者模式的时候注意要在适当的时候进行注册和反注册,以免在不需要观察的时候接收到事件。比如 eventbus在 fragment 销毁之后还在接收事件。需要注意的是handler 的 post 会让一个事件延后进行,这样也会造成未知的问题
    • 3.代码的可阅读性非常重要,在写代码的时候要时常问自己,如果是一个新手过来看代码他能看得懂吗?
    • 4.代码逻辑一定要跟着数据走,数据简练而且正确,那么代码逻辑也就会简练正确。
    • 5.要时刻注意生命周期这东西,不管是数据的生命周期、还是需求的生命周期、还是操作流程的生命周期、还是 Activity 的生命周期。

01-15 项目复盘

  • 1.改进:
    • 1.无。。。
  • 2.问题:
    • 1.需要将一个东西的初始化的全部代码放在一个代码区域。而不是让初始化逻辑散落在各个地方,然后靠某个id 或者其他东西将不同的地方的数据连接起来。这样会造成以下问题:
      • 1.给后面接手代码的人留坑,一不小心就会漏加了某个初始化的逻辑
      • 2.这样的代码是低内聚的
    • 2.还是要注意对一个数据块全部生命周期的控制,申请了一块内存就要去找地方释放它。对于 java 类语言来说就是不引用它了,对于 c/c++ 类语言来说就是手动 delete
    • 3.如无必要勿增实体,这句话出自“奥卡姆剃刀”。在写代码上体现的就是:在保证业务逻辑的前提下,尽量定义或使用最简单的数据结构,数据结构越简单写出来的逻辑就越简单,千万不要使用无效的中间数据结构
    • 4.不要保证临时代码的想法去写代码。 在开始写代码的时候就想好整个结构,比先写代码然后后面去调整结构效率会更高。

03-05

  • 1.不要把某些事情不当回事,这些事情最终可能演变成大事情。预防比治理方便百倍。

  • 2.对外提供的 api,不要包含当前层次不需要做的事情,有些事情应该交给被调用者做。也就是说 api 的内部实现需要对调用者是透明的,调用者不用去搞清楚 api 的内部实现也可以顺利调用。

  • 3.presenter 需要数据和 ui 一起拆,presenter 之间不需要太多的数据交互

  • 4.不管是写代码还是改 bug 有时候需要找到问题的本质,而不要只要改表面的问题。跳出当前的思维局限,就能找到更好的办法。

  • 5.在改代码的时候一定要跳出原来的思维,以新的思路想想

  • 6.接手别人未测试的代码的时候一定要完整的了解他们写的东西,不然坑很大

  • 7.尽量将回答他人的话用实际证明,看代码的时候路径这些东西可以 debug 看,不要怀着心虚去写代码

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,847评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,208评论 1 292
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,587评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,942评论 0 205
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,332评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,587评论 1 218
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,853评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,568评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,273评论 1 242
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,542评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,033评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,373评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,031评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,073评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,830评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,628评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,537评论 2 269

推荐阅读更多精彩内容

  • 社交红利阅读笔记 书名:社交红利(修订升级版) 作者:徐志斌 出版社:中信出版社 正文前笔记: 推荐序1摘要 社交...
    凫水阅读 8,805评论 4 26
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 170,568评论 25 707
  • 用两张图告诉你,为什么你的 App 会卡顿? - Android - 掘金 Cover 有什么料? 从这篇文章中你...
    hw1212阅读 12,473评论 2 59
  • 世外桃源酒仙乡,秋风送爽伴帆扬。 一汪碧绿裁云絮,万道红霞照我裳。 沿岸环湖观翠色,翻山越岭赏风光。 闲来等遇两三...
    翔遠阅读 262评论 0 1
  • 雨葵_5264阅读 439评论 0 0