范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文

在GitHub上玩转开源项目的CodeReview

  一、幕后故事
  时光荏苒,岁月如梭…… (太文绉绉了,这不是我的风格)
  今天我准备聊聊在 GitHub 上如何玩 Code Review。
  突发奇想?心血来潮?不是。
  咋回事呢?(对八卦不感兴趣的可以直接跳到下一节,但是我猜你会感兴趣。)
  首先我是 DevStream 开源社区成员。
  在五月份,又有3位活跃的优秀的牛X的 Contributors 正式加入 DevStream 开源社区,正式成为了社区 Member!
  (看下面的红框框)
  于是乎,加上三月份的4个"老 Member",DevStream 社区就有7个"社区 Member"了(社区 Member 区分于像我这种在思码逸上班的内部 Member)!
  7个疯狂输出的 Members,外加接近20个 Contributors,我和铁心两个人基本就只能看着 pr 笑笑,一边表示欣喜,一边表示 review 不过来了,"应接不暇",废了废了……
  也就是说,是时候组织一个 reviewer 组织,拉着大家一起玩 Code Review 流程了!
  说到 Code Review 流程,流程是啥?规范是啥?规则是啥?技巧是啥?xxxx?我能预想到 reviewers team 这个事情落地之日会有一堆问题砸到我头上。好吧,我需要写一篇文章来聊聊这些事。 二、踏上旅途
  下面我们开始一次 Code Review 之旅。 1. 抢票阶段:认领一个 Review 任务
  开始一次 review 之前,首先咱得"认领"一个 review 任务。
  怎样算成功认领?如下图,Reviewers 里有你的头像,这是当前 pr 你就是 reviewers 之一,同时可以看到黄色 bar 里的一行字" This pull request is waiting on your review. "以及绿色的按钮" Add your review "。你可以点击这个" Add your review "开始一次 Code Review 之旅。
  " 那么怎么认领呢? " 可能你还想问我。
  这个问题有答案,也没有答案。
  因为你是 reviewer 之一,那么你就有权限自己点击 Reviewers 右边的 齿轮按钮,然后指定自己是一个 Reviewer。如果你不是一个"合法"的人 reviewer,那么你得先成为 reviewer (If you want)。 2. 持票上船:开始 Review 流程
  点击  Add your review  按钮后,就进入到了网页版 Code Review 页面,大致如下:
  这里有很多值得"探索"的特性,比如:左边的"文件树"、文件树上方过滤"commits"的下拉框、右边的"文件过滤"、每个文件右上角的 Viewed 选择框、…… 每发现一个新功能,你的 review 过程就会多简化一分。
  关于这个页面,没有比官方文档更权威和详细地介绍了,我想我没有理由"搬一次砖",大家点击链接进一步探索吧。
  对于简单的修改,或许网页直接查看代码 diff 就足够了,类似这种变更级别的 pr:
  我们可以轻松判断这个修改是不是"正确",然后选择进一步的操作,比如 Approve:
  3. 下船休整:下载一个 pr 到本地 Review
  对于一个不能"一眼看穿"的人 pr,比如对方没有附上详细的测试结果等信息来证明他的修改已经"充分测试"(充分测试的例子),这时候靠肉眼我们很难判断这个 pr 合入后会怎样,或者不借助 IDE 的能力我们甚至很难看懂一些复杂的修改,这时候就需要下载这个 pr 对应的代码到本地,然后用 IDE 来帮助 review 了。
  以 pr #641为例,我们需要下载这个 pr,这时只需要执行这样两条命令: git fetch upstream pull/641/head:pr641 git checkout pr641
  效果如下:
  然后在 IDE 里打开项目,就能看到 pr 对应的代码了:
  " 代码在手,天下我有! "
  这会你可以在本地仔细查看每一处代码细节,也可以在本地跑一下  make buid -j8   或 go test ./...   之类的命令来逐步"打消自己内心的疑虑"。当然,pr 本身会触发 GitHub actions workflows,这些基础的 build/ut 流程其实本地不跑也能知道是不是有错误,我们可以直接在页面上看到(每个项目具体的 ci 逻辑不一样):
  到这里,你就基本能够完全看懂一个 pr 对应的所有修改了,是放他过?还是拦下马?他的"命运"掌握在你的手里! 三、移花接木:提交一个 commit 到别人的 pr
  可能有时候,你需要修改别人的 pr。哥们,我建议你抽根烟冷静一下,再问自己一句:我真的必须去修改他的 pr 吗?这样做会不会被打?
  一般情况下,我不建议你去修改别人的 pr,尤其是不能保证你的修改一定正确的情况下。因为你别人的 pr 本身就是容易冒犯到别人的事情,其次万一你改了之后发现还需要别人自己补一个 commit,他会在复杂的 git 操作中骂你一万遍。
  什么时候需要去动别人的 pr 呢?举个例子,比如这个 pr。
  首先这是一个 new contributor 提交的 first pr,所以我不希望他的 first pr 之旅太艰辛。然后这个 feature 其实并不简单,虽然技术上看并不难,但是要做到"不重不漏"就需要对  dtm   命令的所有子命令都"了然于胸"才行。显然,这对一个 new contributor 来说要求太高了。所以在他提交了一个 commit 之后,我直接在这个 commit 的基础上又加了一个 commit,完成了剩下的工作,并且在认可他的工作后告知其为什么我要修改这个 pr,并附上了测试结果等。
  具体怎么操作呢?步骤如下: 修改代码,本地 commit
  前面我们已经下载了一个别人的 pr 到本地,接着自然是继续修改,然后提交 commit( git add xxx & git commit -s -m "xxx"  ),到这里都没啥技术含量,不赘述了。找到 pr 对应的源分支
  在 pr 页面可以看到具体 pr 是从哪里提交的,比如:
  我们点进去,就可以找到 fork 项目的地址信息,像这样:
  于是,我们可以这样来加一个 remote: git remote add himku git@github.com:himku/devstream.git
  此时这个 pr 对应的 fork 项目的地址是  himku  (git@github.com:himku/devstream.git),对应分支是 fix-issue-559  ,于是我们可以这样将自己新增的 commit(s) 提交到这个 pr 里(本地 commit 后执行):git push himku HEAD:fix-issue-559
  是不是很酷? 三、乱七八糟的规则:目的是啥?规范是啥?要求是啥?啥是啥?
  再聊聊剩下的一些零零碎碎的问题,比如可能你想问 review 的目的啊,规范啊,要求啊,啊啊啊…… 1. 目的是啥?
  可能你会问我为什么要 code review ?我希望你别问。因为我不想总结。(这个问题可以 Google 到一堆答案)
  我相信你心中有答案,code review 对应的是一堆的"褒义词",比如:发现错误、保证质量、互相学习……
  你想的都是对的,总之这个事情值得做就对了,不需要去总结为什么。
  啥?
  你还是想听我谈谈?
  谈谈就谈谈。 软件质量 :首先大多数的错误可以在 code review 阶段被暴露出来,这些错误留到日后"爆雷"再被修复,代价会大很多,不管是造成的业务负面影响,还是额外付出的修复时间。所以 code review 看似多花了时间,其实整体看是提升交付效率的; 代码质量 :严格执行 code review 流程一方面可以互相督促对方:你别随便提交"垃圾"代码上来,会有人 review;一方面假如有"垃圾"代码被提交上来了,可以有人站出来及时制止。完善的 code review 流程可以避免代码可读性日益变差,维护成本日益增大,逐步变成"屎山"; 传播经验 :如果我写的代码很漂亮,我希望你来 review,这时候一方面我想"秀",无需避讳;另外一方面我希望你能够学着点,这是为你好;如果我的代码写的很烂,我希望你来 review,这时候我希望你可以给我指出问题,帮助我提升编码水平,这是为我好;总之互相 review,互相学习,你好我好大家好; 2. 规范与要求是啥?
  当我们解决了所有"流程"或"技巧"层面的问题后,下一个"非技术性"问题是: 怎样的代码需要"返工"?怎样的代码可以被合入?
  我相信你心中会有这样的疑问。
  对于有"错误"的代码,毫无疑问,不能合入,这不在我们的讨论范围。
  那么正常运行,没有逻辑错误的代码呢?比如"代码风格有点混乱",比如"缺乏必要的一些注释",比如"可读性差"……
  我们分三个层次来思考: 严格 :我们完全可以指出任何是"问题"的问题,因为一份 WTF 的代码被合入后,所有对 coder 的骂声都包含一句潜台词"reviewer 干啥吃的?"所以很简单,你觉得有问题的地方都可以提出来,包括:"代码太复杂,看起来费力,我觉得可读性不好。""我看了十分钟还是看不懂,说明可读性不够好。""这个函数太长了,我鼠标滚了好几下才看完,你应该拆分一下。""这个函数从名字我看不出来功能,但是我懒得看具体逻辑,为什么没有更多的注释?""你这个源文件都五百行了,你要不拆分一下?""这个包的逻辑很关键,你应该加点 UT?"……
  一般 :如果一份代码功能完全正确,可读性也勉强还行,或许没有很好的面向对象来组织,或者注释不太详细,或者存在其他一些小小的不完美。这时候你也可以选择通过,避免太严格的 review 规则把一个 pr 的合入周期拖的太长,一方面影响交付效率,一方面打击开发者信心。很多时候我们可以对自己,或者对核心开发者要求更严格一些;但是对于社区贡献者,往往需要更多的"宽容"与认可。 温柔 :如果是一个 new contributor 提交的一个 first pr,这时你可以放下各种能放下的要求,只要这份代码还过得去,就能合入,没有啥比给新人一些信心更重要的。如果 pr 存在一些小问题,你觉得对他来说改起来不会太困难,你可以留言友好的告诉他哪里需要改,怎么改;如果你觉得对他来说进一步做到"完美"有难度,你也可以直接提一个 fix 的 commit 到这个 pr 里,直接帮他修复问题,然后留个言告知他没有考虑到的问题是什么。
  文章来自https://www.cnblogs.com/daniel-hutao/p/code_review.html

久坐的危害和注意事项久坐是当今社会中一个常见的健康问题,因为越来越多的人工作和生活方式都需要长时间坐着。久坐不仅对身体健康造成了威胁,还可能导致许多的健康问题。因此,了解久坐的危害和注意事项非常重要。什么是电解质水,喝了对人体有什么影响?电解质水是一种加入了电解质的水,电解质是一种帮助维持人体内电解质平衡的物质。它是以水为基础,加入适量的电解质(如钠钾钙镁等)制成的。电解质水是一种被广泛用于运动员远足者和其他需要补春天养生,必喝2杯花茶!1杯疏肝健脾1杯祛湿清热,千万别错过春暖花开,各色花儿也迫不及待地盛开了一波又一波,如迎春花玉兰花郁金香。。很多朋友可能不知道,不少花朵除了好看,还有一定的养生作用。此时若是能饮用一些花茶,有助于疏肝健脾祛湿下火,非初春小香风百搭简单大方一直都是最好的穿衣理念。只要选对单品,相互搭配,穿衣天天都会有新鲜感。天气回暖,迫不及待想要穿春装。小香风外套又火了,如果你也打算为自己入手一件,那么就进来看看吧,学会这样想做面部填充,又怕蜡像脸?玻尿酸和脂肪怎么选?其实,玻尿酸和自体脂肪没有好坏之分,只能说究竟哪个更适合你。举个例子如果你本身就很瘦,还怎么都吃不胖,那即便你想做自体脂肪填充,医生也会随便给你做,因为没有合适的地方抽脂。反之,如开春了,第一波时髦精都在穿的短夹克,这样搭真心时髦减龄短小精悍的短夹克利落率性又百搭,这样一款时尚单品自然早就被时髦精们收入囊中了。看看,无论是时尚街拍,还是时尚博主开春造型,短夹克出镜率有多高?想要成为时尚达人,那么衣橱里都不能缺少10岁甜馨长成李小璐翻版!穿搭也向妈妈看齐,小小年纪有了星味在不同的年龄阶段,穿衣打扮自然要根据自身的气质和身材进行挑选,如果服装单品不符合我们的穿衣条件,最终呈现出来的效果就会很违和。对于小女生来说,其实保持童趣化的穿搭方式,一定会看上去没心情踢球了,土耳其一足球队申请退出土甲联赛土耳其甲级联赛球队耶尼马拉耶士邦官方消息,申请退出土耳其甲级联赛。土耳其近日遭遇强烈地震,伤亡惨重,耶尼马拉耶士邦门将图尔卡斯兰就在地震中不幸罹难,年仅28岁。目前,耶尼马拉耶士邦佩林卡交易都咨询了詹眉,我们提前做了今夏的自由市场运作湖人副总裁兼总经理罗伯佩林卡接受了采访。湖人在截止日前得到马利克比斯利范德比尔特迪安吉洛拉塞尔,达文里德。算上从得到八村塁开始,湖人送走的6名球员都是合同年。佩林卡说这些交易对湖人2023年,吃对,更健康!(地中海饮食)大家好,我是营养调理师空谷阿亮,今天的主题是2023年,吃对,更健康!(地中海饮食),现在进入主题俗话说民以食为天,吃的对才健康!美国新闻与世界报道发布了2022年度最佳饮食榜单。比A4纸还小的电脑主机零刻Sei12Pro评测,英特尔12代i5百万跑分这两年,迷你主机的普及程度越来越高,用户的认可程度也越来越高。原因很简单,迷你主机的配置越来越高,可以满足办公娱乐游戏多种需求噪音小,不占用宝贵的桌面空间等等,都是普及的重要原因。
AI探索图谱学习路线ChatGPTAIGC这么火,程序员如何学习?前言去年下半年开始,由于一些原因,开始接触AI相关内容。开始痛苦的学习过程,至于为什么是痛苦?一方面底子算是比较差(学校学过的物理数学计算机知识基本全部还给老师),另一方面毕业后就小白必看2023年智能手机购机指南(2月更新版)友情提示本文1。2万字,建议先收藏慢慢看。事物的发展都是像波浪一样,有低谷,也有高峰。过去两年间,安卓手机阵营可以说是迎来了一个非常糟糕的低谷期。好在,高通也意识到问题所在,终于在vivo首款竖折屏配置曝光方形副屏设计,搭载骁龙8芯片在折叠屏手机市场中,竖折叠手机已经通过市场数据表明了它的优秀。去年底OPPO发布了旗下首款竖折产品FindN2Flip好评度也还不错,下一个要发竖折的应该就是vivo了。此前Dig今年热门手机TOP10出炉!这款小米手机拿下第一今年的手机市场确实是比较热闹,特别是在2023年世界移动通信大会(MWC2023)上,基本上大品牌的手机厂家都直接发布了自己最新款的旗舰级手机,让整体手机市场有着更多的活动与生机,新职明确,胡元桥任山东土地集团总经理(附简历)3月6日晚间,山东土地集团微信公众号更新文章,披露胡元桥已出任该企业党委副书记董事总经理。文章称,3月6日,山东土地集团举行隆重的升旗仪式,鼓舞全体干部职工振奋精神昂扬斗志,开启新我当教育博主被打脸最狠的一次自己挖的坑,含泪也要填上文米粒妈前段时间跟闺蜜夫妻俩吃了顿饭,闺蜜老公一个劲儿吐槽,家里两个娃,简直是碎钞机转世,吞金兽再生。米粒爸说你们俩娃应该还好吧,花费上不是应该112吗?闺蜜噗呲笑出了声,说要不你胎动时,宝爸一摸就停止了,难道胎儿在娘胎就开始认人了吗?胎动二字,对于孕妈来说并不陌生。不久前,孕妈群里一直在讨论胎动的事情。有孕妈问我怀孕19周了还没感受到胎动,这正常吗?而有的孕妈说,自己16周后就感觉到了胎动。事实上,有些孕妈出现关于产前诊断的思考一产前诊断的伦理原则终止还是不终止妊娠(toterminateornot)?在妇产科领域里,伦理问题最集中也最容易引起争议的专科有两个一个是产前诊断,另一个是辅助生殖,前者尤为突出家长们速看!孩子身材矮小,你知道真正的原因吗?儿童生长发育健康的话题一直是社会关注热点。数据显示,我国目前需要治疗的矮小症患儿有700万,但每年真正接受合理治疗的患者不到3万名。3月5日上午,福建医科大学附属福州儿童医院联合中引起宝宝几天不排便,这2个原因,妈妈们不要弄错文余明仁宝宝不排便自然是无数妈妈比较焦虑的一个问题,正常新生期宝宝的肠道比较小,吃的频繁拉比较频繁,当宝宝突然不排便便的时候也会开始担心,宝宝不排便的原因也应该要弄清楚,很多妈妈可立春过后,是孩子长高黄金期,常吃这5道蒸菜,营养足长得快头条创作挑战赛春日送暖百花开,迎春绽金它先来,春天万物生发,阳光高照,空气变得十分干燥,人特别容易上火缺水,在饮食上少食辛辣油腻之物,多食清淡少油之物,而蒸菜就是很好的选择。蒸不仅