代码评审

值得推荐的C/C++框架和库

前提是你 提交于 2019-12-19 23:27:36
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> C/C++程序员必须熟练应用的开源项目 作为一个经验丰富的C/C++程序员, 肯定亲手写过各种功能的代码, 比如封装过数据库访问的类, 封装过网络通信的类,封装过日志操作的类, 封装过文件访问的类, 封装过UI界面库等, 也在实际的项目中应用过, 但是回过头仔细想想,其实以前自己写过的这些代码,只能是在特定的项目或者特定的环境中使用, 对于自己来说, 在不同的项目中应用, 只需要复制代码, 改改也就可以了, 因为自己写的代码自己很熟悉。问题是, 你封装的这些库, 在给别人使用的时候, 别人用起来是否很方便, 跨平台方面是不是也很通用, 性能是不是足够的好, 是不是支持多线程, 功能是不是也足够强大,可以适用于各种不同的需求。如果你上面这些都做到了, 证明你在这个库上确实花费了一番功夫, 经过了持续的改进和优化。 在日常的开发中, 作为一个程序员, 很多东西已经没有必要再重新开发了, 可以直接拿过来使用, 毕竟21世纪都已经过了N年了。我们没有必要重新发明轮子(不可否认发明轮子的过程可以学到很多东西,我就是这么走过来的)。 下面结合自己多年的开发经验, 想到哪里写到哪里, 希望对新人有一定的帮助。 一、网络 网络库必须掌握 ACE 和 libevent, 一个是重量级的网络库, 一个是轻量级的网络库。仔细想想

15个最佳的代码评审(Code Review)工具

久未见 提交于 2019-12-19 07:49:47
  代码评审可以被看作是计算机源代码的测试,它的目的是查找和修复引入到开发阶段的应用程序的错误,提高软件的整体素质和开发者的技能。代码审查程序以各种形式,如结对编程,代码抽查等。在这个列表中,我们编制了15个最好的代码审查工具,这将有助于开发者节省代码审查时间。 您可能感兴趣的相关文章 Web 前端开发人员和设计师必读精华文章推荐 精心挑选的优秀jQuery Ajax分页插件和教程 12个让人惊叹的的创意的 404 错误页面设计 让网站动起来!12款优秀的 jQuery 动画插件 8个前沿 HTML5 & CSS3 效果【附源码下载】 1. Gerrit Gerrit is a web based code review system, facilitating online code reviews for projects using the Git version control system. Gerrit makes reviews easier by showing changes in a side-by-side display, and allowing inline comments to be added by any reviewer. Gerrit simplifies Git based project maintainership by

架构师能力模型

♀尐吖头ヾ 提交于 2019-12-18 20:19:40
https://github.com/elithnever/paperreading/blob/master/%E6%9E%B6%E6%9E%84%E5%B8%88.md#架构师能力模型 架构师能力模型 架构师在很多人眼中是一个非常高大上的职业, 就像武侠小说中的绝世高手一样, 关键时刻可以起到扭转乾坤的作用, 是团队中的灵魂人物. 回想我自己做一线架构师的过程中, 也没有经历过比较系统的培训, 都是摸着石头过河. 近期在培养架构师的过程中, 促使我一直在思考, 一个合格的架构师到底应该具备哪些能力? 对希望成长为架构师的同学, 或者在承担架构师职责的同学, 需要提供哪些方面的指导和帮助, 才能让他逐步成长为合格的架构师呢? 下面我结合自己的经验, 总结了我认为对架构师来说非常重要的十项能力, 希望给那些努力成长为架构师的同学提供一点点帮助. 研发流程的持续改进 架构师不是单兵作战, 凭借个人英雄主义是无法做成大事的. 架构师一定是指挥一个团队来共同完成既定目标, 或者一个复杂项目. 在软件研发领域, 决定团队研发效率的核心在于研发流程的优化. 现阶段互联网公司大多采用敏捷研发流程, 这其中主要包括: 需求卡片的状态流转. 尽可能依靠工具实现状态的自动化流转, 减少人为操作的情况. 开发工具的选择. 比如web ide, 代码审查工具, 项目管理工具等. 代码的开发和审查

第4周小组作业:WordCount优化

亡梦爱人 提交于 2019-12-18 09:29:55
一、基本任务:代码编写 + 单元测试 1、GitHub 地址: https://github.com/Wegnery/New_WordCount 2、PSP2.1 表格 PSP2.1 PSP 阶段 预估耗时 (分钟) 实际耗时 (分钟) Planning 计划 5 5 · Estimate · 估计这个任务需要多少时间 5 10 Development 开发 260 350 · Analysis · 需求分析 ( 包括学习新技术 ) 20 25 · Design Spec · 生成设计文档 —— —— · Design Review · 设计复审 ( 和同事审核设计文档 ) —— —— · Coding Standard · 代码规范 ( 为目前的开发制定合适的规范 ) 20 30 · Design · 具体设计 30 30 · Coding · 具体编码 180 200 · Code Review · 代码复审 30 60 · Test · 测试(自我测试,修改代码,提交修改) 60 60 Reporting 报告 60 75 · Test Report · 测试报告 30 30 · Size Measurement · 计算工作量 5 5 · Postmortem & Process Improvement Plan · 事后总结 , 并提出过程改进计划 30 25 合计

如何使错误日志更加方便排查问题

旧街凉风 提交于 2019-12-18 04:01:04
在程序中打错误日志的主要目标是为更好地排查问题和解决问题提供重要线索和指导。但是在实际中打的错误日志内容和格式变化多样,错误提示上可能残缺不全、没有相关背景、不明其义,使得排查解决问题成为非常不方便或者耗时的操作。而实际上,如果编程的时候稍加用心,就会减少排查问题的很多无用功。 在阐述如何编写有效的错误日志之前, 了解错误是怎么产生的, 非常重要。 错误是如何炼成的 对于当前系统来说, 错误的产生由三个地方引入: 1. 上层系统引入的非法参数。 对于非法参数引入的错误, 可以通过参数校验和前置条件校验来截获错误; 2. 与下层系统交互产生的错误。 与下层交互产生的错误, 有两种: a. 下层系统处理成功了,但是通信出错了, 这样会导致子系统之间的数据不一致; 对于这种情况, 可以采用超时补偿机制,预先将任务记录下来,通过定时任务在后续将数据订正过来。 更好的设计方案 ? b. 通信成功了,但是下层处理出错了。 对于这种情况, 需要与下层开发人员沟通, 协调子系统之间的交互; 需要根据下层返回的错误码和错误描述做适当的处理或给予合理的提示信息。 无论哪一种情况, 都要假设下层系统可靠性一般, 做好出错的设计考虑。 3. 本层系统处理出错。 本层系统产生错误的原因: 原因一: 疏忽导致。 疏忽是指程序员能力完全可避免此类错误但实际上没做到。比如将 && 敲成了 & , == 敲成了 =

互联网公司的技术总监都敲代码吗?

前提是你 提交于 2019-12-17 18:54:18
这是一个非常敏感的话题,每次谈论到技术总监要不要写代码的时候,总会引起一片争论。 有的程序员说技术总监如果不写代码怎么能领导好技术团队;有的说技术总监还需要写代码?如果技术总监都需要写代码的话,那技术团队有多操心呐。正反观点看起来都蛮有道理的,我也试着和大家聊聊这个话题。 我感觉自己还是蛮有资格来讨论这个话题的,我有过15人左右技术团队负责人的经历、也有过管理超50多人研发的经验,也经历了从一个程序员到一个技术管理者身份转变的历程,所以方便从各个角度来看待这个问题。 任何问题抛开背景来讨论都是耍流氓。 技术总监要不要写代码这个话题,其实也是需要看公司是什么样的背景、处于什么样的阶段、技术总监管理人员的规模来定。 另外技术总监只是一个统称,很多公司还会分部门技术总监、研发中心技术总监等,不同级别也需要不同的讨论。 首选探讨一下什么样的技术总监需要写代码,这里的写代码指的是参与到具体的编码实现。个人认为有以下 3 种情况: 01 技术驱动型的技术总监需要写代码 很多互联网公司产品,完全是依赖技术来构建的,公司的命脉都是技术,那么这个技术总监就一定要参与到核心代码的编写中。 比如我一直比较关注的创业公司 PingCAP ,他们公司的主要产品是 TIDB,一个开源分布式关系型数据库。我们知道开发一个高效的数据库是一个技术含量很高的事情,那么这种类型公司的技术总监一定会参与到编码中。 02

使用GitHub进行团队合作

懵懂的女人 提交于 2019-12-17 09:28:06
原文: Team Collaboration With GitHub GitHub 已经成为的一切开放源码软件的基石。开发人员喜欢它,基于它进行协作,并不断通过它开发令人惊叹的项目。除了​​代码托管, GitHub 的主要吸引力是使用它作为一个协作开发工具。在本教程中,让我们来看看一些最有用的GitHub的功能,特别是使团队工作更有效率,更高生产力,非常重要的,好玩的那些功能! GitHub和软件合作 有一件事我觉得非常有用的是,可以将GitHub的维基集成到项目的源代码主线上。 本教程假定您已经熟悉 Git – 开放源码的分布式版本控制系统,由Linux的创世人 Linus Torvalds 在2005年创造的。如果您需要修改或查找有关 Git ,请访问我们以前的 截屏教程 ,和一些 文章 。此外,你应该已经有一个 Github 上的帐户,并做了一些基本的功能,如创建一个存储库,并推送到 GitHub 上。如果没有,可以参照更多以前的 教程 。 在这个世界上的软件项目,不可避免的是,我们必须和一个团队一起工作来交付软件。在本教程中,我们将探索一些软件开发团队最常用的工具。这些工具包括: 添加团队成员 – 组织和合作者 Pull请求 – 发送代码变更和合并 问题跟踪 – Github上的错误记录 分析 – 图形与网络 项目管理 – Trello 与 Pivotal Tracker

今天来讲下白盒测试和黑盒测试的区别

让人想犯罪 __ 提交于 2019-12-16 17:52:25
一. 软件测试方法 软件测试方法:白盒测试、黑盒测试、灰盒测试、静态测试、动态测试 白盒测试:是一种测试用例设计方法,在这里盒子指的是被测试的软件,白盒,顾名思义即盒子是可视的,你可以清楚盒子内部的东西以及里面是如何运作的,因此白盒测试需要你对系统内部的结构和工作原理有一个清楚的了解,并且基于这个知识来设计你的用例。 白盒测试技术一般可被分为静态分析和动态分析两类技术。 静态分析主要有:控制流分析技术、数据流分析技术、信息流分析技术。 动态分析主要有:逻辑覆盖率测试(分支测试、路径测试等),程序插装等。 白盒测试优点:迫使测试人员去仔细的思考软件的实现;可以检测代码中的每条分支和路径;揭示隐藏在代码中的错误;对代码的测试比较彻底;最优化。 白盒测试缺点:昂贵;无法检测代码中遗漏的路径和数据敏感性错误;不验证规格的正确性。 黑盒测试又叫功能测试,这是因为在黑盒测试中主要关注被测软件的功能实现,而不是内部逻辑。在黑盒测试中,被测对象的内部结构,运作情况对测试人员是不可见的,测试人员对被测产品的验证主要是根据其规格,验证其与规格的一致性。 在绝大多数没有用户参与的黑盒测试中,最常见的测试有:功能性测试、容量测试、安全性测试、负载测试、恢复性测试、标杆测试、稳定性测试、可靠性测试等。 灰盒测试:白盒测试和黑盒测试往往不是决然分开的,一般在白盒测试中交叉使用黑盒测试的方法

最终评审及团队事后诸葛亮作业总结

时光怂恿深爱的人放手 提交于 2019-12-16 13:17:52
目录 1. 作业链接和作业说明 2. 作业总体完成情况 3. 优秀团队和优秀作业 4. 总结和思考 1. 作业链接和作业说明 最终评审 最终评审考虑到同学们期末课业压力比较大,没有布置博客作业,没有像之前冲刺作业那样有硬性要求,只是要求对作品进行完善。 评审点主要是 (1)总体完成度【50%】 (2)新增功能(团队冲刺之后的这段时间)【20%】 (3)部署/真机【10%】 (4)代码【20%】 评审偏向于技术,助教做在一旁查看完整功能流程,并查看项目、阅读代码,以于此提问,力求发现成品不足的地方和藏有BUG的地方。 代码评测侧重代码规范和代码不足。及一些建议。 团队第六次作业——事后诸葛亮 此次作业主要是让大家分析团队合作中的得与失,主要参考邹欣老师的博客: 项目管理之事后诸葛亮会议: http://www.cnblogs.com/xinz/archive/2011/11/20/2256310.html 评审点主要是 (1)现代软件工程 项目Postmortem 模板主要问题项:设想和目标、计划、资源、变更管理、设计/实现、测试/发布、团队的角色管理合作(7项,每项【10%】) (2)总结项【20%】 (3)博客布局【10%】 2. 作业总体完成情况 最终评审 冲刺阶段之后的开发量明显少于冲刺阶段了。大部分团队离完整的100%功能完成还有不小的距离。 在项目评审时测出的BUG不少

初创公司应该如何做好持续集成和部署?

陌路散爱 提交于 2019-12-15 11:13:23
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 持续集成和部署是每一个互联网开发团队都必须要面对的问题,特别是在初创公司,由于业务和技术团队快速增长,技术积累较弱的,所以一个高效的,可持续的运维规范尤为重要。 最近一段时间一直在梳理项目开发流程以及自动化测试和部署规范,作为一个总结和大家分享,希望有所帮助。 高效可持续的运维环境需要合理的规范作为支撑: 应用管理规范 权限管理规范 配置变更规范 发布策略规范 日志运维规范 持续集成部署实战(该内容将在后续文章中进行讨论,本次不展开) 一、应用管理规范 1. 应用版本化 可以使用SVN、Git对代码进行版本控制。 建议使用Git(如:GitLab/Gogs),并使用Git Group命名规范:大原则为根据产品域名区分,或者根据前后端业务模块进行分组(小写字母命名,横杠[-]作为连接字符) 举例: MAKA官网 http://www.maka.im 对应的Git仓库Group为official, 按照功能模块分组,商城前端对应的Git仓库Group为store。 项目名命名规范: 全部用小写字母 横杠[-]作为连接字符 命名规则:[产品名称]-[项目类型]-[自定义名称] 举例: official-store-customer。 实践建议: 在创建项目仓库时就要权衡前后端或者大的功能模块的拆分,保持低耦合度。 2