关于我
-
来自南部的一个小城市,个性不张扬,讨厌随波逐流。
那年今日
贴一下豆包的回复:https://www.doubao.com/thread/w6e40fc65f8722ebd 练习 “课题分离”阿德勒心理学提出:“别人如何评价你,是别人的课题;你如何对待自...
💼 工作记录 发现有不少代码都是我当时参加的方案评审,当时想的是,每个人都有自己的编程习惯,所以我不太会强求别人在代码设计上一定要怎么样...比如命名风格,函数抽象,类设计等。但是这些我参加评审...
🥳 周末 [WEEK-51]这个周末把织物的配件都钩完了,小帽子、棒球、棒球棒、小包。期间又走了一开始不知道的很多坑,导致一遍遍的重新钩...下个周末再花一天时间应该就差不多了。分清正反面很重...
🎬 电影 今天看了《头脑特工队》。莱莉的大脑里住着不同的情绪小人:乐乐、害怕、厌厌、生气、伤心。这部分动画电影让我更好的感知到自己的情绪的存在(实际的情绪类别会更多),以及让我了解伤心到底有什么...
💬 随便聊聊 看到一个评论很有意思:“至少我从来没听说过有人死前还会想着,这辈子没有赚更多的钱没有为当年的公司做更多的牛马之事。”
📝 每日记录 今天我碰到一个老太太,她说:“想吃啥就买啥,买回来吃得下就是最幸福的事!”我突然意识到,经历了身体不适后,能畅快呼吸才是最大的幸福。😷 生病的事 去年4月开始胸闷,原以为夏天会...
💻 代码思考 存在多个指针类型 out 函数参数,特别小心的是当其中一个out参数取值错误,其他out参数的赋值情况。
比如
当返回值为false的时候,理论上out1 和 out1 仍然是nullptr,外部不需要释放任何资源。
因此在 Getxxx 函数内部实现的时候,可能会出现ptr 赋值成功,ptr2 赋值失败,此时返回值为false,导致外部没有意识到需要释放out1 的空间导致内存泄露。因此在内部实现的时候,应该等ptr 和ptr2 的内容都获取到后,再给两个指针赋值。
请问时光机要怎样支持代码高亮?
和文章中插入代码块方式一样,使用markdown语法即可
已开启评论的 Markdown 支持,在评论中使用 反引号 包裹代码没成功……
可以看下主题使用文档——常见问题里面的评论相关里面有的
💻 代码思考 好的注释应该是解释性语言,而不是动作性语言。具体例子:
上面代码是chromium base 库中关于json 解析工具的注释,它解释了两个参数的作用。
一个不好的写法如下,对参数的注释是这个函数在做什么,而不是参数本身的说明:
💻 代码思考 以往工作中常用的设计模式只有代理模式、观察者两种,似乎不太需要太复杂的设计模式。这一周工作主要是重构了之前写的一部分代码来支持更通用化的需求。因为这个需求中设计到很多状态的转换,每个状态都会有几个分支,尝试了状态设计模式,设计状态,设计每个状态会执行的动作,设计每个状态执行相应动作应该转移到的下一个状态以及副作用行为。Xstate 项目的可视化非常方便提前先构建好整个状态机的模型。
写完之后,能很明显的感觉代码思路清晰很多。之前是在很多基础模块中去判断状态,然后进行对应的行为,这次所有的状态管理全部收敛到一个controller中,状态的转移过程对外是不可见的,外部基础模块只要调用controller的对应动作方法,controller会将工作委托给对应的状态处理。不再需要像之前那样,先获取当前状态,再判断当前状态,最后执行某个行为转移到新的状态。
同时一个独立的功能需求的代码设计是不应该嵌入到一些基础类型的模块中的,而是应该写一个controller,将需要使用的基础模块作为该controller的成员指针来使用。
💼 工作记录 💻 代码思考在正式工作之前,我没有写过单测,主要是平时自己写的代码通常耦合度较高,没有单独抽象设计模块的概念。
最近开始写一些通用能力的基础库需要写单测。第一次单测的编写是在代码基本完成后开始写的,完成单测后会发现一些bug,于是修改bug。但这个过程中会发现代码设计的一些不合理之处,比如多个接口的返回值是否更统一,对于接口可能出现错误时的返回值,应该如何处理(这个可以多参考chromium base库中的代码实现)。如果一个模块的多个接口设计不统一、那么单测同样也会非常复杂。
其实上面的过程就有点TDD那味了,但是测试驱动开发,需要先写一个无法通过的测试,通过修改代码来使得测试通过,再重构代码。在这个过程中不断的开发代码,而不是先写完代码,再写单测试。
单测的重要性是毋庸置疑,因为代码复杂性总可能出现某个分支逻辑错误。因此TDD将单测与开发结合,减轻了写单测的难度和压力,同时也能通过单测进一步发现代码的设计问题。
参考文章: