代码评审

C++ 编程规范

谁说我不能喝 提交于 2020-04-07 10:08:19
组织和策略问题 第0条 不要拘泥于小节(又名:了解哪些东西不应该标准化) 无需在多个项目或者整个公司范围内强制实施一致的编码格式。 第1条 在高警告级别干净利落地进行编译 高度重视警告:使用编译器的最高警告级别。通过修改代码而不是降低警告级别来排除警告。 第2条 使用自动构建系统 一键构建。 第3条 使用版本控制系统 svn。 第4条 在代码审查上投入 做好同行评审。 设计风格 第5条 一个实体应该只有一个紧凑的职责 一次只解决一个问题。一个实体(变量、类、函数、名称空间、模块和库)或一个模块,只赋予一个良好的职责,不要乱发散。 第6条 正确、简单和清晰第一 代码是写给人看的,要简单、清晰、可靠。 第7条 编程中应知道何时和如何考虑可伸缩性 关注算法的优化,注意复杂性。 第8条 不要进行不成熟的不要进行不成熟的优化,优化应该使代码更清晰易读,易理解,易重构,而不要为了所谓的性能,让代码变得更复杂和更差的可读性。 第9条 不要进行不成熟的劣化 不要使用低效的用法,比如++,应倾向于使用前++,而不是会产生临时变量的后++。 第10条 尽量减少全局和共享数据 全局和共享数据,会增加耦合度,降低可维护性。 第11条 隐藏信息 模块或对象设计,内部实现与外部接口要分离,减少依赖性。 第12条 懂得何时和如何进行并发性编程 多线程,与平台相关。小心使用各种多线程技术。 尽量减少共享对象

程序员应该如何理解新接手的项目

感情迁移 提交于 2020-04-04 07:50:52
【转】程序员应该如何理解新接手的项目 文章来源:本站原创 作者:Deepfisher 发布时间:2012年4月29日 浏览次数:677   假如你是一名.net开发人员,正在开发或是维护包含1000个类并使用了很多框架的项目。你会如何来理解这些代码呢?在典型的.net企业项目小组中,大部分能够帮你的高级工程师都很忙,文档也很少的情况下。你需要尽快交付成果,并向项目组证明自己的能力。你将会如何处理这种状况呢?这篇文章为开始开发新项目或对刚接手项目的.net开发者提供了一些建议。   1. 不要想着一下子就弄明白整个项目   仔细考虑一下,为什么你会想要先理解项目代码呢?大部分情况是有人要求你修复一个bug,或者增强系统现有功能。你要做的第一件事情不是理解整个项目的架构。当对项目进行维护时,这样做可能会对你造成巨大的压力及损耗大量的时间。   即便是有10年编程经验的.net开发者,也无法短时间内理解项目的核心工作机制,尽管他们可能已经在这个项目工作超过一年(假设他们并非最初的开发人员)。比如,对于认证机制或事务管理机制还是缺乏确切的认识。   他们是怎么做的呢?他们对于自己负责的部分非常了解,并且能够交付价值给小组。每天的交付价值远比了解一些以后还不确定有没有的东西重要的多。   2. 关注于尽快交付价值   那我是要打消你对于理解项目架构的热情吗?完全不是

T- SQL性能优化详解 http://www.cnblogs.com/weixing/p/3357519.html

让人想犯罪 __ 提交于 2020-04-03 21:48:14
T- SQL性能优化详解 http://www.cnblogs.com/weixing/p/3357519.html 故事开篇:你和你的团队经过不懈努力,终于使网站成功上线,刚开始时,注册用户较少,网站性能表现不错,但随着注册用户的增多,访问速度开始变慢,一些用户开始发来邮件表示抗议,事情变得越来越糟,为了留住用户,你开始着手调查访问变慢的原因。   经过紧张的调查,你发现问题出在数据库上,当应用程序尝试访问/更新数据时,数据库执行得相当慢,再次深入调查数据库后,你发现数据库表增长得很大,有些表甚至有上千万行数据,测试团队开始在生产数据库上测试,发现订单提交过程需要花5分钟时间,但在网站上线前的测试中,提交一次订单只需要2/3秒。   类似这种故事在世界各个角落每天都会上演,几乎每个开发人员在其开发生涯中都会遇到这种事情,我也曾多次遇到这种情况,因此我希望将我解决这种问题的经验和大家分享。   如果你正身处这种项目,逃避不是办法,只有勇敢地去面对现实。首先,我认为你的应用程序中一定没有写数据访问程序,我将在这个系列的文章中介绍如何编写最佳的数据访问程序,以及如何优化现有的数据访问程序。    范围   在正式开始之前,有必要澄清一下本系列文章的写作边界,我想谈的是“事务性(OLTP)SQL Server数据库中的数据访问性能优化”,但文中介绍的这些技巧也可以用于其它数据库平台。  

在腾讯,有多少技术Leader在写代码?

陌路散爱 提交于 2020-04-02 06:07:50
在腾讯,有多少技术Leader在写代码? 2020 年 3 月 9 日,腾讯公司正式对外发布了《腾讯研发大数据报告》。在这份报告中,腾讯披露了2019 年公司在产品及技术研发方面的重要数据,这也是腾讯自技术委员会成立以来第一次主动对外披露研发相关大数据,是腾讯对自身技术研发层面的一次阶段性总结。 该报告是由腾讯旗下敏捷研发协作平台TAPD、腾讯代码托管平台工蜂与腾讯集成交付系统腾讯CI联合出品,这三款平台支撑了腾讯几乎全量业务的研发全流程。 研发人员占比 66%,新增 12.9 亿行代码 报告显示,腾讯在研发投入上持续加码。 2019 年,腾讯研发人员占比高达 66%,在中国诸多科技公司中位居前列。同时,腾讯 2019 年新增研发项目超过 3500 个——随着腾讯全面拥抱产业互联网的战略推进, 2019 年 To B 项目数量比 2018 年增长了 77%。 在代码数量上,2019 年腾讯新增代码行数高达 12.9 亿,相比 2018 年增长了 30%。 在研发效能方面,腾讯同样表现亮眼。 自 2006 年起,腾讯就开始推动研发模式的敏捷进化,在长期的敏捷研发实践中,腾讯开发人员构建出了腾讯敏捷协作平台 TAPD 和腾讯工蜂这两大工具,可实现对用户需求的快速响应。 TAPD 提供产品研发全生命周期解决方案,支持敏捷需求规划、迭代计划跟踪、测试与质量保证、持续构建交付

开发过程步骤

假如想象 提交于 2020-03-28 18:34:46
那要看你的项目经理是当成什么层面的了,如果是负责面向客户联络沟通,内部监督控制进度的话是能做好内外沟通,两边都能协调好就可以了。如果你要深入项目管理,那么肯定要熟悉整个软件开发项目的过程,什么阶段做什么、怎么做、谁来做,时间、质量、进度三者平衡。没有一个完美的项目,因为总会有瑕疵,不要太追求完美,用户满意、适度质量的项目才好。关于软件开发过程的一些理解分享一下。 1、首先制定项目计划,最初计划是里程碑性质的。 可以先按瀑布模型设置,里程碑点主要为需求评审、设计评审、经过代码开发和单元测试后进行集成测试、部署上线是一个很重要的里程碑,一般用户会期望系统何时能使用进入试运行期(也可以称为用户测试阶段) 2、需求开发阶段: 怎么样写好需求很关键,如何学会进行需求开发可以去看下经典的《需求工程》这个翻译的书,不是很厚,但需要能理解为什么那样做更好,这个需要实践经验锻炼自己。如果有项目成员,可以一起做需求,这个阶段对于业务理解、分析、如何开展调研以及文字表述、业务流程图描述还有文档编辑能力都有不少要求。一般分为《用户需求说明书》和《需求规格说明书》,小项目可以写一个《需求分析报告》,《用户需求说明书》是用用户的语言进行描述,让用户和开发团队对于需求的达成一致的理解,《需求规格说明书》,则是对用户需求的分析,形成系统要具有的功能,这个是真正提供用户可交互操作的文档

测试流程

醉酒当歌 提交于 2020-03-28 18:30:18
中国移动项目的传统行业,测试流程一套一套的,需求评审 -- 开发详细设计评审 -- 用例评审 -- 提测评审 -- 测试执行 -- 报告输出 -- 安排上线 -- 线上验收,很多会议是需要产研测全部参加的,时间投入很大,这原因是 因为项目/业务迭代周期是一个月上一次版本,有足够的时间去做这些,当测试全流程介入的时候确认能发现很 多问题,这里就引入一个词:质量前移 ,比较好理解,不是在测试执行才发现问题,而是将问题前移,移到需 求评审,设计评审,用例评审中去,这一步做的好的就是测试的一个方向:业务专家 ,看项目/产品的高度达到 了产品高度,从全局去考虑测试用例场景,对业务非常熟悉,提升影响力,开发/产品会来咨询你业务知识 唯品会的流程,核心是火车发布制,项目安排是每个星期发布一个版本,也就是每个星期只有一趟车,项目想 上线的话,就需要在指定时间上车,意思就是在规定时间开发测试打包完毕。整个项目的流程就是按照这个火 车开车时间来排期规划。(当然你要问到很多线上问题怎么办?紧急项目怎么办? 春运不是也有临时车次这个 说法吗?) 在互联网行业的话,迭代速度明显加快,都是你追我赶的节奏,但很多流程也是必须有的。 需求评审会根据需求大小来看是否开展的,小需求的话,就直接是一份文档查阅就完事了的。 在唯品会的时候,所在团队有点做的比较好,就是提测环节,我们要求开发提测有输出,要求他们整理功能点:

代码大全阅读笔记01

穿精又带淫゛_ 提交于 2020-03-28 11:48:36
经过老师的推荐,我选择了这本《代码大全》,代码大全是一本完整的软件构建手册,涵盖了软件构建过程中的所有细节。它用了易懂的语言例子让我们更加熟悉软件编程。 一开始就向我们介绍了软件构建: 软件开发过程中的各种不同活动:定义问题、需求分析、规划构建、软件建构或高层设计、详细设计、编码与调试、单元测试、集成测试、集成、系统测试、保障维护。 构建活动的具体任务: 验证有关的基础工作已经完成,因此构建活动可以顺利进行下去。 确定如何测试所写的代码 设计并编写类与子程序 创建并命名变量和具名变量 选择控制结构,组织语句块 对你的代码进行单元测试和集成测试,并排除其中错误 评审开发团队其他成员的底层设计和代码,并让他们评审你的工作 一些非重要的构建活动包括管理、需求分析、软件架构设计、用户界面设计、系统测试、以及维护。 软件构建就是在做项目之前你该做的准备和之后优化整理,这一部分做好就会为自己节省很多精力,软件构造极其的重要,而我们很多人却没有做好这点。 我们之前做一个项目连想也不想,就要开始工作,出现bug就慌得不行,更不用说谈软件构建了。我没有好好想过我们项目的结构,整个框架的分步,具体的数据库也不细致,我总是做到这一步,突然想起来这个东西还没弄,这样做心里就会没谱。 现在自己必须养成新的习惯,从小的项目做起,每次在新的项目或者测试之前都要细分一下,做好准备工作,这样也能预防bug发生。

Java代码编写规范(转载)

一曲冷凌霜 提交于 2020-03-21 09:34:04
编码规范 1 前言 为确保系统源程序可读性,从而增强系统可维护性,java编程人员应具有基本类似的编程风格,兹制定下述Java编程规范,以规范系统Java部分编程。系统继承的其它资源中的源程序也应按此规范作相应修改。 2 适用范围 本文档将作为java编程人员软件开发的编程格式规范。在项目Java部分的编码、测试及维护过程中,要求严格遵守。 3 命名规范 定义这个规范的目的是让项目中所有的文档都看起来像一个人写的,增加可读性,减少项目组中因为换人而带来的损失。 3.1 Package 的命名 Package 的名字应该都是由一个小写单词组成。示例:unipost.trans 3.2 Class 的命名 Class 的名字每个单词必须由大写字母开头而其他字母都小写的单词组成。示例:FileMng 3.3 Class 成员的命名 变量、方法、属性:大小写混排的单词组成,首字母小写 示例: functionName、countNum、size 3.4 Static Final 变量的命名 Static Final常量:大写单词组成,单词之间使用“_”连接 示例: MAX_INDEX 3.5 前后台变量名称 前台变量 fg_变量名 后台变量 bg_变量名 3.6 参数的命名 参数的名字必须和变量的命名规范一致。 3.7 数组的命名 数组应该总是用下面的方式来命名: 3.8 方法的参数

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

旧巷老猫 提交于 2020-03-21 07:32:36
原文链接: http://coolshell.info/c/c++/2014/12/13/c-open-project.htm 留档备查,非常强大的C/C++开源项目总结文档~ 值得学习的C语言开源项目 - 1. Webbench Linux下使用的非常简单的网站压测工具。它使用fork()模拟多个客户端同时访问我们设定的URL, 测试 网站在压力下工作的性能,最多可以模拟3万个并发连接去测试网站的负载能力。Webbench使用 C语言 编写, 代码实在太简洁,源码加起来不到600行。 http://home.tiscali.cz/~cz210552/webbench.html - 2. Tinyhttpd 下载链接: http://sourceforge.net/projects/tinyhttpd/ - 3. cJSON cJSON也存在几个弱点,虽然功能不是非常强大,但cJSON的小身板和速度是最值得赞赏的。其代码被非常好地维护着,结构也简单易懂,可以作为一个非常好的C语言项目进行学习。 http://sourceforge.net/projects/cjson/ - 4. CMockery 主要特点: 免费且开源,google提供技术支持; 轻量级的框架,使测试更加快速简单; 避免使用复杂的编译器特性,对老版本的编译器来讲,兼容性好; 并不强制要求待测代码必须依赖C99标准

代码规范

别来无恙 提交于 2020-03-18 14:20:52
编码规范 1 前言 为确保系统源程序可读性,从而增强系统可维护性,java编程人员应具有基本类似的编程风格,兹制定下述Java编程规范,以规范系统Java部分编程。系统继承的其它资源中的源程序也应按此规范作相应修改。 2 适用范围 本文档将作为java编程人员软件开发的编程格式规范。在项目Java部分的编码、测试及维护过程中,要求严格遵守。 3 命名规范 定义这个规范的目的是让项目中所有的文档都看起来像一个人写的,增加可读性,减少项目组中因为换人而带来的损失。 3.1 Package 的命名 Package 的名字应该都是由一个小写单词组成。示例:unipost.trans 3.2 Class 的命名 Class 的名字每个单词必须由大写字母开头而其他字母都小写的单词组成。示例:FileMng 3.3 Class 成员的命名 变量、方法、属性:大小写混排的单词组成,首字母小写 示例: functionName、countNum、size 3.4 Static Final 变量的命名 Static Final常量:大写单词组成,单词之间使用“_”连接 示例: MAX_INDEX 3.5 前后台变量名称 前台变量 fg_变量名 后台变量 bg_变量名 3.6 参数的命名 参数的名字必须和变量的命名规范一致。 3.7 数组的命名 数组应该总是用下面的方式来命名: 1 byte[]