代码评审

Beta版本演示

家住魔仙堡 提交于 2020-03-02 15:23:47
队名:福大帮 组长博客链接: https://www.cnblogs.com/mhq-mhq/p/12052263.html 作业博客 : https://edu.cnblogs.com/campus/fzu/SoftwareEngineeringClassAofFuzhouUniversity/homework/10176 福大帮所有成员: 021700125 梅恒权(组长) 041702324 杨欢 031702629 汪倍民 031702345 关文涛 031702301 王瑞卿 031702628 黄益颂 031702405 陈梦雪 031702426 朱庆章 031701129 黄宇航 041701208 胡康 成员贡献比例 梅恒权:负责规划项目进程、答辩组织会议、分配任务,参与文档拟写,贡献比例10% 杨欢:负责前端的开发,代码编辑,贡献比例15.75% 汪倍民:负责前端的开发,代码编辑,贡献比例15.75% 关文涛:负责后端的开发,代码编辑,贡献比例15.75% 黄益颂:负责后端的开发,代码编辑,贡献比例15.75% 王瑞卿:产品设计、团队评审、参与文档拟写,贡献比例7% 朱庆章:负责app的ui设计、参与代码讨论,贡献比例8% 陈梦雪:参与文档拟写、贡献比例4% 黄宇航:参与文档拟写,贡献比例4% 胡康:参与文档拟写,贡献比例4% GitHub 项目链接:

中小企业如何实现在家研发软件?看这个就够了

◇◆丶佛笑我妖孽 提交于 2020-02-28 06:00:31
为响应国家号召,春节期间各大厂纷纷喊出“延迟上班”“在家办公”口号。中小企业的管理者却表示:“我太难了!” 不同于大型集团公司,中小企业很少有预算购买昂贵的在线协同研发系统;虽然市场上有一些免费的开源研发工具可以选择,但是自己搭建一套完整的在线协同研发系统,又缺少相应的经验和能力。甚至部分中小企业的管理者在担心远程办公“如何保障代码安全”和“如何高效协作”等基本问题。 云效提供从“需求 ->开发->测试->发布->运维->运营”端到端的在线协同服务和研发工具,其简单安全、开箱即用的特点,非常适合中小企业开发者迅速开展远程办公工作。 为降低中小企业的采购成本,云效推出中小企业扶植计划,30 人以下研发团队可以免费使用云效全部功能。在即将正式开工之际,我们特别整理这份《在线协同研发指南》,希望将先进的软件研发经验和工具分享给中小企业,让开发者在家也能安全高效地研发软件。 团队如何实现在线项目协同,确保开发任务高效推进? Q1 :不见面,如何进行有效的沟通,合理规划需求,确保按时交付? A1 :每日晨会使用云效电子看板配合钉钉在线会议沟通任务进度,确保团队成员对需求、任务、职责理解一致,任务到人持续追踪。同时也可以使用云效文档功能,实现在线文档编辑和知识沉淀。 Q2 :如何简单快速了解每个人的工作进展和工作负荷,并合理规划研发资源? A2 :使用项目管理迭代规划功能,Product

玩转 Stack Overflow 之提问篇

天涯浪子 提交于 2020-02-28 05:57:33
Stack Overflow是世界上最大的编程类问答网站, 大多数程序员或多或少和它有所接触: 即使你从来没有在它上面提问或回答过, 别忘了, 在搜索很多技术问题的时候, 结果的第一页往往就有几条链接到Stack Overflow的问题。 很 多人对于Stack Overflow的第一印象是: 很多编程问题都能在上面找到专业的答案, 太牛了。 但当问题没有找到合适答案, 而去上面提新问题的时候, 可能有人会发现自己的问题被残忍的 downvote,甚至被关闭、最后被删除。更有甚者, 发现自己被禁言了, 不允许再问问题。 这是Stack Overflow的另一面: 在一定程度上它对新手是很不友好的。 我 个人是Stack Overflow的活跃用户(这个(http://stackoverflow.com/users/1009479/yu-hao)就是我), 目前 reputation 超过 80K, 参与过很多的关闭/删除问题的投票(关闭问题需要5个rep超过3K的用户投票 , 删除问题需要3个或更多rep超过10K的用户投票 )。写这篇文章, 是为了分享一下我的经验, 讲讲如何有效的在Stack Overflow上问问题。 可以问什么样的主题 大 家都知道 Stack Overflow是编程类的问答社区, 但还真有人把它当成通用的问答社区了, 问些完全无关的问题。 其实,

揭秘腾讯工蜂:企业级代码管理协作解决方案

寵の児 提交于 2020-02-28 02:33:48
揭秘腾讯工蜂:企业级代码管理协作解决方案   互联网敏捷研发,离不开高效的代码管理系统。作为研发流程的基础环节,代码管理具备串联需求管理、持续集成、持续交付等上下游研发链路的作用,也承载着企业追求代码质量、鼓励代码复用等工程师文化的建设。腾讯拥有近3万研发人员,产品线漫长、业务种类繁多,不同的团队规模、技术栈和研发模式都对研发协作提出了不同的需求,也导致了代码库规模和研发流程参差不齐。同时编译系统、发布系统等需要检出所有代码,自动化程度越高,对代码库的访问压力就越大。提供安全稳定的代码服务,管理不同规模的代码仓库,支持各种类型的研发流程,是代码管理面临的三大挑战。基于行业状况及自身发展需要,腾讯选择了以Git为基础,在内部孵化了自研的Git系统——工蜂。   首先要解决服务端代码库存储扩容问题,因为单存储节点无法满足TB级增长的存储量,可考虑的有自定义数据分片和通用分布式文件存储两种方案。分布式存储的优点是对应用层屏蔽了底层存储结构,架构相对简单,但对IO密集型的代码管理应用来说,过于依赖分布式文件系统的IO性能,可移植性也不强。相反自定义数据分片可以自由控制分片策略,灵活均衡资源负载,另外在每个分片的底层存储上,也可以结合分布式存储,进一步扩展数据备份。工蜂选择了数据分片的方案,以仓库路径作为路由规则,并在应用层实现跨分片操作。数十万仓库分布在不同集群

如何高效迅速的进行CodeReview

空扰寡人 提交于 2020-02-27 08:09:20
前言 很多公司都要求项目做CodeReview,但很多人第一次CodeReview往往不知道该如何做,也不知道为什么去做。笔者参加过几个项目的CodeReview,发现一些共性问题: 有时候参与Review的人太多了,意见太分散,Review时间拉的很长,发现问题效率低; 有时候会发现一个CodeReview时间很长,参与者会觉得煎熬和浪费时间; 有时候不太了解对方评审的东西,没法跟上大家的思路,影响效率; 有时候走查的代码量太大了,无法做到详细走查; 有时候会看到有些人无所事事、精神不集中、不发言,影响效果。 对这些问题,用鱼骨图做个分析: 希望本文中的一些建议能够缓解上述问题,能使大家更快的了解CodeReview的意义和方法,有经验的人能够更加快速有效的进行CodeReview。 CodeReview的目标和原则 CodeReview的目的是提升代码质量,尽早发现潜在缺陷与BUG,降低修复成本,同时促进团队内部知识共享,帮助更多人更好地理解系统。 建议CodeReview的原则如下: 发现代码的正确性 代码审查用意是在代码提交前找到其中的问题——你要发现的是它的 正确性 。在代码审查中最常犯的错误—几乎每个新手都会犯的错误是,审查者根据自己的编程习惯来评判别人的代码。 不仅是在Review Code,更是在分享和学习 Code

[译]软件架构师之路

拟墨画扇 提交于 2020-02-25 19:12:37
今天给大家带来一篇自己翻译的干货《软件架构师之路》。本周Github上升很快的项目。其内容对致力于成为软件架构师(不论前后端)的同学应该都会有极大的帮助。 项目地址: 中文地址 https://github.com/gamedilong/SoftwareArchitect-CN 原文地址 https://github.com/justinamiller/SoftwareArchitect 如果有看完英文原文,发现本文翻译内容中存在问题或者错误的欢迎到中文Git地址PR,如能够对大家起到一定的帮助也欢迎star 内容 什么是软件架构 软件架构的层次 软件架构师的典型工作内容 软件架构师的重要技能 架构师的技术路线图 相关书籍 什么是软件架构? 软件架构师是一名软件开发专家,他可以进行高层设计选择并决定技术标准,包括软件编码标准,工具和平台。 (出处: 维基百科:软件架构师) 软件架构(architecture)是一个系统的基本组织,由其组件、它们之间的相互关系和环境以及决定系统设计和演化的原则来表示。 (出处: 软件架构手册) 软件架构的层次 软件架构可以被抽象的分为几个层次,不同的层次对技能的要求不同。对层次有很多不同的划分,我最喜欢如下这三种划分: 应用级 : 最低层次的架构。聚焦单个具体的应用。 非常注重细节, 底层设计。 沟通仅限入单个开发团队。 解决方案级 : 中级别的架构

值得学习的C语言开源项目

时光毁灭记忆、已成空白 提交于 2020-02-22 13:03:03
1.Webbench Webbench是一个在linux下使用的非常简单的网站压测工具。它使用fork()模拟多个客户端同时访问我们设定的URL,测试网站在压力下工作的性能,最多可以模拟3万个并发连接去测试网站的负载能力。Webbench使用C语言编写, 代码实在太简洁,源码加起来不到600行。 下载链接: https://github.com/LippiOuYang/WebBenchl 2.Tinyhttpd tinyhttpd是一个超轻量型Http Server,使用C语言开发,全部代码只有502行(包括注释),附带一个简单的Client,可以通过阅读这段代码理解一个 Http Server 的本质。 下载链接: https://github.com/LippiOuYang/Tinyhttpd 3.cJSON cJSON是C语言中的一个JSON编解码器,非常轻量级,C文件只有500多行,速度也非常理想。 cJSON也存在几个弱点,虽然功能不是非常强大,但cJSON的小身板和速度是最值得赞赏的。其代码被非常好地维护着,结构也简单易懂,可以作为一个非常好的C语言项目进行学习。 项目主页: http://sourceforge.net/projects/cjson/ 4.CMockery cmockery是google发布的用于C单元测试的一个轻量级的框架。它很小巧

疫情还没结束,远程办公怎么办?

放肆的年华 提交于 2020-02-21 10:19:55
今年疫情的严重程度似乎超出了所有人的预想,随着国家法定的假日即将结束,大家返回工作地的风险依然存在,即使已经返回了工作地,现在所有人返回公司集中工作都不是明智之选,通过远程办公来降低公司生产力损失看起来很有必要,远程办公会有哪些可能的损失和降低的方法呢?今天我们主要围绕软件研发团队的远程办公的几个问题聊一聊。 目标驱动 VS 熬时间 提到远程办公,大家首先可能想到的就是工作时间不可控,团队成员的产出不可控怎么办? 目标牵引,对于软件行业的脑力工作者,即使在公司工作,员工到底在干什么也是无法知道的,在远程办公的情况下更是如此,我们可以通过更明确、更细粒度的目标牵引来解决。目标建议拆分到每天的粒度,并且要有明确的是否达成,同时通过进展的透明来促进大家达成每日承诺,在目标拆解与进展透明章节会再讲讲这个问题。 目标牵引并不是完全不强调工作时间,沟通在软件开发中已经越来越重要,为了保障沟通的效率,团队成员还是要有一个明确的工作时间,通常可以参考公司正常的上班时间即可,可以和员工强调工作时间需要在线,确保其他成员需要沟通时能够随时进行。 代码云托管 VS 代码内网无法访问 开发人员远程办公需要解决的另一个问题就是环境,如果你的公司必须在内网环境开发,又无法提供远程或者VPN能力,那远程办公基本是不可能的了。但大部分公司的开发人员只要有一台电脑,基本都能够进行开发工作了

一份软件工程行业生存指南

蓝咒 提交于 2020-02-21 06:38:25
如今越来越多的人进入软件工程行业,偶遇一份国外同学写的行业生存指南,读来感觉颇值得参考,简单翻译过来,分享一下。也许生存指南能更好得让你在这个行业生存下来,并快速获得成长与发展。 我遭遇了作为一名软件工程师的现实:我必须去掌握当时还不知道,但我将会需要的许多技能。回首过往,如果早知道我现在知道的这些事情,肯定要好很多。 因此,我写了篇指南,它源自早年我作为专业人士去辅导程序员的经验,以及我本人和我一些同事的经验来帮助其他人。 包括以下内容: 如何充分利用好面试; 如何在软件工程师的工作中存活下来并茁壮成长; 以及在考虑持续改进时需要哪些资源。 1. 面试 当你开始你的软件工程职业生涯时,你将不得不面对一个不争的事实。面试糟透了。 对每一个牵涉其中的人来说都是可怕的。作为一名面试官和一名应聘者,我可以证明面试是一个很大的时间无底洞,它包含极度的压力,并且是一个非常糟糕的未来工作表现的指标。然而,它们是必要的邪恶,以至于你和你的简历都最好为此做好准备。 1.1 准备战斗 如果你正在考虑从事软件工程,一定要学习一些最常见的编程面试问题,比如 “FizzBuzz”: 编写一个将数字从 1 打印到 100 的程序。对于 3 的倍数就打印 ‘Fizz’ 而不是数字,对于 5 的倍数 就打印 ‘Buzz’。对于既是 3 又是 5 的倍数,就打印 ‘FizzBuzz’。 听起来足够简单,对吧?

代码管理前期相关理念理解

ぐ巨炮叔叔 提交于 2020-02-19 04:19:22
一、持续集成概念理解 白话理解:多个开发人员多次将自己写的提交代码到某个文件夹,通过又之前的代码进行整合,发现错误并修改; 持续集成(Continuous integration,简称CI),简单地说就是多个开发人员一天多次地将自己编码的代码提交到主干; 01:快速定位错误(每完成一点代码更新,就提交到主干,通过以之前提交的代码进行集成可以快速发现其中的错误) 02:防止分支大幅度偏离主干(若不经常持续集成,主干又在不断更新,会导致以后集成的难度变大,甚至难以集成); 持续集成的目的就是让产品可以快速迭代,同时还能保持代码的高质量。 二、持续交付概念理解 白话理解:所有开发人员在某个时间代码提交完成后,交给质量团队(测试工程师)进行测试。 持续交付(Continous delivery)指的是,频繁地将软件的新版本,交付给质量团队(测试人员)或者用户,以供评审,如果 评审通过,代码就进入生产阶段。持续交付可以看作是"持续集成"的下一步。它强调的是,不管代码怎样更新,软件 是随时随地可以交付给质量团队(测试人员)和用户进行评审。 三、持续部署概念理解 白话理解:质量团队(测试工程师)测试代码没问题,将代码交给运维人员,运维人员通过工具将代码发布到生产服务器 持续部署(Continuous deployment)是就是"持续交付"的下一步,指的是代码通过评审后,可以自己的部署到生产环境