首页 文章 精选 留言 我的

精选列表

搜索[Harness工程],共10000篇文章
优秀的个人博客,低调大师

20 年 Java 工程师的经验有什么用

赠书啦,欢迎大家在评论区聊聊「关于 Java 开发的故事」,畅所欲言 我们将在评论区随机选出 3 名 OSCer,赠送《Spring Boot + MVC + Vue3 项目全流程开发指南》一本 活动截止时间:3 月 5 日 18:00 编码规范 1.Java开发规范 Java开发规范主要是为了保证代码的质量和可读性,并提高团队协作的效率,具体做法如下。 1) 使用驼峰式命名法命名Java类、方法和变量。 2) 确保代码格式一致,使用制表符或空格字符进行缩进,其中缩进使用4个空格字符。 3) 不能省略大括号,避免出现错误的复合语句。 4) 避免使用长行代码,在必要时使用换行符。 5) 有效地运用空格来分隔代码。 6) 每个方法只处理一项任务。 7) 不要使用过时的语言特性。 8) 使用final关键字来定义不允许修改的变量。 2.版权规范 版权规范主要是为了保证项目的知识产权,防止代码被恶意复制或盗用,具体做法如下。 1) 在项目中使用合适的授权许可证。 2) 对使用的开源代码进行审查。 3) 声明代码版权信息。 4) 声明禁止将代码用于商业用途。 3.命名规范 命名规范主要是为了增加代码的可读性,降低维护成本,具体做法如下。 1) Java类名采用大驼峰式命名法,命名规则为:名称(如业务名或功能名) + 动词 +层级后缀。例如:在控制层管理员管理模块,那么它的类名是AdminManageController,其中Admin是业务名、Manage是动词、Controller控制层后缀。 2) Java方法名采用小驼峰式命名法,命名规则为:动词 + 名称(如业务名或功能名) + 业务数据结构名(可选),例如:获取管理员列表方法,那么它的方法名是getAdminList,其中get是动词、Admin是业务名、List是业务数据结构名。 3) Java变量名采用小驼峰式命名法。 4) 常量名采用大写字母,多个单词使用下划线进行分隔。 5) 所有名称都尽量采用实际业务名或功能名。 4.注释规范 注释规范主要是为了增加代码的可读性和可维护性,具体做法如下。 1) 对类和方法进行注释,包括功能、输入参数和输出值等。 2) 对复杂代码片段进行注释。 3) 注释应精简、清晰。 4) 注释应该与代码保持一致。 5) 不要编写过多或者毫无意义的注释。 6) 在代码中使用符合标准的单行注释和多行注释。 7)在代码变动时,更新注释的内容。 版本控制 版本控制(Version Control)是一种管理和控制代码或文档的历史版本和变更记录的工具。它可以帮助开发团队在开发过程中管理代码的变更、跟踪项目的历史记录、协作开发,以及解决代码冲突等问题。 1.版本 版本是指软件的不同发布状态。每个版本都代表着软件在某个时间点的特定状态,包括功能、修复和改进。这里的软件是指一组文件或代码,那么软件版本是指一组文件或代码在某一时刻的状态,它记录了文件或代码的修改历史。 每个版本都会有一个编号,这个编号叫版本号。版本号是用来标识和区分不同软件版本的一组数字。通常包括主版本号、次版本号、修订号和构建号,有时也可以有其他标识。以下是一些常见的版本号定义规则。 1)主版本号:表示重大功能改变或架构变化,一般在大幅度重构或设计变更时增加。 2)次版本号:表示较大规模功能添加或修改,一般在添加新功能时增加。 3)修订号:表示小规模的修改或问题修复,一般在bug修复或小功能改进时增加。 4)构建号:表示每次编译生成的唯一标识符,每次构建都会增加。 版本号的定义规则可以根据具体项目和团队的需求进行定制。常见的规则包括“主.次.修订”格式(如1.0.0),也有日期格式(如2022-01-01)等。 版本号具有以下重要意义。 1)识别不同版本:通过不同的版本号,可以清楚地区分和识别不同软件发布状态,帮助用户选择合适的软件版本。 2)管理功能变更:通过对每个版本进行编号,可以追踪和管理软件中引入的新功能、修改和删除旧功能。 3)问题追踪与修复:通过对每个修订号进行编号,可以追踪和管理问题报告,并将问题与特定版本关联起来。 4)兼容性管理:通过比较不同软件版本之间的差异,可以帮助开发人员确保向后兼容性,并确保用户能够平滑升级到新版。 总之,版本和版本号在商业软件项目中起着至关重要的作用,它们能够帮助开发团队更好地管理、追踪和控制软件发布过程中的各种变化。 2.版本分支 版本分支是指在开发软件时,为了同时进行多个开发任务或者为了管理不同版本之间的差异而在主干代码基础上创建的一个独立的代码分支。 版本分支通常是从主干代码中某个时间点创建的,可以在分支上独立地进行开发、测试、修复问题等工作,而不影响主干代码。同时,版本分支也可以合并回主干代码中,将各个分支的修改内容整合在一起。 以下是一些常见的版本分支定义规则。 1)主干代码:通常是指软件的主要代码线,包含稳定的功能和修复过的问题。主干代码不允许直接修改和提交。 2)版本分支:通常是指从主干代码创建出来并用于独立开发或管理不同版本之间差异的独立代码分支。版本分支可以自由修改和提交。 3)特性分支:通常是指用于实现某个特定功能或任务而从版本分支上创建出来的独立代码分支。特性分支可以自由修改和提交。 4)发布标签:通常是指一个标记点,用于标记在特定时间点上,主干或者某个特定版本分支的打包发布。 版本分支具有以下重要意义。 1)同时进行多项开发任务:通过创建不同的版本分支,在不同的开发任务之间切换和管理,使得团队成员可以更高效地同时进行多项开发任务。 2)管理不同软件版本:通过将不同软件版本保存在各自的版本分支上,并合并回主干或其他相应发布时,在保证稳定性和可靠性的同时实现对各种需求变化及时响应。 3)保持发布历史记录:为每次发布的软件版本打标签,非常利于在以后追踪发布历史记录。 4)方便问题追踪与修复:通过对每个特性分支、修订号等进行编号,可以追踪和管理问题报告,并将问题与特定的功能、任务、发布相关联起来。 总之,版本分支是一种重要的软件管理机制,在软件开发过程中可以帮助团队更好地控制软件发布中的各种变化。正确使用版本分支能够有效提高团队协作效率,并确保项目的高质量、可靠。 3.版本合并 版本合并(Merge)是指将两个或多个不同的代码版本合并为一个新的版本。在软件开发过程中,版本合并是一个非常常见的操作,特别是在多人协作开发或者分支开发的情况下。 版本合并有以下一些执行规则和意义。 1) 版本合并必须基于一个共同的祖先版本进行的。即需要先找到两个或多个版本之间的共同祖先,然后将其分别与目标版本进行合并。 2) 版本合并时需要注意代码冲突。如果两个或多个版本中都对同一段代码进行了修改,则需要手动解决代码冲突。 3) 版本合并后必需进行测试和验证。合并后的代码可能会出现新的问题,需要对其进行测试和验证。 4) 版本合并可以使得不同分支之间的代码得以相互融合。这可以提高团队协作开发效率,避免重复工作。 5) 版本合并可以使得不同分支之间相互独立。这可以避免在修改某个功能时影响到其他功能。 6) 版本合并可以保留历史记录。每次合并都会生成一个新的版本,这样就能够保留历史记录,方便以后查看和追溯。 总之,版本合并是非常重要的操作,能够提高团队协作开发效率、避免重复工作、保留历史记录等。同时,在进行版本合并时需要注意遵守一些规则,以保证代码质量和稳定性。 4.版本冲突 版本冲突是指多人同时修改同一个文件的同一部分时会出现不同的版本。当试图将这些不同版本合并时,就会出现冲突。版本冲突是软件开发中非常常见的问题。 版本冲突有以下一些执行规则和注意事项。 1) 当多人修改同一个文件的同一部分时,会自动检测到冲突。 2) 版本冲突需要手动解决。 3) 解决版本冲突需要仔细分析和比较不同版本之间的差异,保留所有有用的修改,并将其合并为一个新的版本。 4) 解决版本冲突需要与其他开发人员协作进行代码审查、讨论、测试等操作。 5) 解决版本冲突可以提高代码质量和稳定性,避免代码错误和漏洞。 总之,在软件开发中,避免或解决版本冲突是非常重要的问题。只有通过合理协作、认真分析、细致比较等方式来解析这个问题,才能保证团队协作开发效率、提高代码质量和稳定性,并且确保软件项目成功完成。 5.中央式版本控制 中央式版本控制是一种常见的软件版本控制方式,也被称为集中式版本控制。 中央式版本控制通常使用客户端-服务器架构。开发者在本地使用客户端工具从中央服务器下载代码,进行开发和修改,再将修改后的代码上传到中央服务器。在上传之前,需要先从中央服务器上获取最新的代码,并进行合并和冲突解决。 现在广泛使用的软件产品是Subversion(SVN)。Subversion是一个流行的中央式版本控制系统,被广泛应用于软件开发和源码管理。它具有稳定性高、可靠性好、易于使用等特点。 虽然中央式版本控制在很长一段时间内是主流版本控制方式,但它也存在一些问题。例如,在分支管理、合并、离线工作等方面存在一些不便之处。因此,在当今软件开发领域也出现了另一种主流的版本控制方式——分布式版本控制系统(例如Git),其具有更加灵活、高效和便利等优点。 6.分布式版本控制 分布式版本控制是一种较新的版本控制方式,其与中央式版本控制的不同点在于,分布式版本控制将代码库完全复制到每个开发者的本地机器上,每个开发者都可以在本地创建、合并分支,并且在不需要连接到中央服务器的情况下进行代码比较和版本历史查看等操作。当然,在需要和其他开发者共享代码时,分布式版本控制系统也提供了一些便利的方式。 当一个开发者需要与其他开发者共享代码时,他可以将自己本地修改后的代码推送到其他人所在机器上,并将自己修改后的代码合并到他人机器上。因此,分布式版本控制系统可以让每个开发者都有完整的代码库备份,避免了单点故障。 Git是最流行和广泛使用的分布式版本控制系统之一,其拥有快速、高效、强大等优点,在大型团队协作和复杂项目管理方面表现出色。 综上所述,版本控制是软件开发中不可或缺的一部分。通过版本控制工具,团队成员可以更好地管理代码和文档,同时也可以提高开发效率和代码质量。本书项目使用Git进行版本控制。 以上内容节选自《Spring Boot + MVC + Vue3 项目全流程开发指南》 作者:花树峰 《Spring Boot + MVC + Vue3 项目全流程开发指南》 花树峰 具有20年以上软件开发经验,技术底蕴深厚、项目管理经验丰富。大学毕业后,历任Java程序员、高级软件开发师、产品经理、客户项目经理、技术经理、技术总监、创业公司合伙人等。精通Java、PHP、Python、Spring、Spring Boot、Spring MVC、MyBatis、Thymeleaf、MySQL、MongoDB等主流技术。曾在惠普、华数集团从事项目开发和产品经理工作,参与研发了“日本电信管理平台”(大型企业应用)、“华数互动电视平台”(大型视频互动平台)、“优猜”(社交类APP)、“木禾建站”(可快速建设在线商城的SaaS平台)等各种大型商业软件应用。 本书全面概述了软件项目开发的全流程,全书共13章,包括项目开发概述、开发规范、开发技术、需求分析、架构与目录结构设计、数据库表结构设计、详细功能设计、技术框架选型、初始化与底层搭建、业务代码开发、单元测试开发、性能测试和部署等内容。书中以实际项目为例,结合理论知识和实践操作,为读者提供了一条清晰、完整的项目开发学习路线。本书不仅详细介绍了各环节的具体操作和技巧,还强调了按照规范进行操作的重要性,以确保项目开发的标准化和高质量。

优秀的个人博客,低调大师

测试工程师在敏捷项目中扮演什么角色

敏捷团队中的测试人员主要负责执行各种测试,以满足“已完成”的定义,从而为团队在重复迭代中努力交付的持续价值创造做出贡献。对于测试人员来说,拥有敏捷的心态是至关重要的,如果没有敏捷的思维方式,他们可能就不能果断地计划、划分优先级并执行他们的任务,因此会无意中影响团队满足迭代目标的能力。敏捷的思维方式是测试人员展示正确行为的先决条件,这些行为能够加速整个团队的性能。 为了在敏捷项目中取得成功,测试人员应该关注以下实践: 1.态度胜过一切 团队中的测试人员可能不具备敏捷背景、自动化技能或丰富的测试经验——只要他们具备成为敏捷团队一员的正确态度,这仍然是可以的。正确的态度会反映在以下行为中,比如:相信敏捷宣言和实践,信任教练并全力以赴地遵循它,对新的学习和变化持开放态度,清晰表达和透明,致力于对团队重要的活动,在这段时间内主动改进和变得更好等等。 敏捷、自动化、测试或其他培训,对于拥有正确态度的人来说,是可以齐头并进的。 根据我的经验,在工作中使用僵化思维的测试人员减慢了迭代的进度。有些行为是——仅在ALM工具中更新状态时才测试缺陷;在测试环境关闭时,闲置而不在本地主机上执行健全性测试;考虑在会议期间单独测试活动;在部署时坚持团队成员的正式沟通,阻止决议和暗示等。 相反,以开放的心态来的测试人员转变了自己,为团队服务,并以各种可能的方式做出贡献,例如,他们中的一些人在空闲时间编写Junit案例来帮助开发人员,学会编写服务来模拟测试环境,在高度动态的环境中灵活调整计划和测试方法。 2.将迭代目标优先于外部分配 在矩阵式组织结构中,测试人员在敏捷团队中与Scrum Master一起工作,但他们向测试实践部门的直线经理或同一项目中的测试经理报告。这些在敏捷团队中驱动整体测试的测试经理,可能会给测试人员分配许多与团队迭代计划不一致的特别任务。 在我与测试人员的多次接触中,我发现他们很难在两方面之间取得平衡——兼顾绩效评估和致力于工作。他们中的大多数人都试图在没有通知敏捷团队的情况下承担外部任务,因为他们不想让直线经理不高兴。一些人知道它会影响正在进行的迭代活动,于是通过延长工作时间即加班来完成这些任务,但也有很多人牺牲了迭代活动。由于这种妥协,他们无法交付迭代目标,这导致了用户故事的常规溢出,也影响了团队的信任和内聚水平。 在这种情况下,测试人员应该怎么做?答案是——迭代活动应该总是优先于任何其他活动。但是,如果他们能够在不影响迭代目标的情况下完成外部任务,那么他们就可以继续!但是,如果外部任务有可能影响迭代目标,那么他们应该咨询团队以获得集体同意或意见分歧,并将决策告知直线经理。 3.跨职能团队中的关系平等 “我不能测试这个用户故事,因为开发人员没有部署它”,一个测试人员在每日站会中说,开发人员回答说:“抱歉,我忘了它,但你也应该联系其他开发人员来完成。”。这个场景突出了团队缺乏协作和所有权。推动一个用户故事的完成并消除间歇的阻碍因素并不是个人的责任,而是团队的努力,作为团队一部分的测试人员也不例外。 测试人员的某些行为有助于加快交付速度——无论是否与测试相关,都需要关注到阻碍因素;经常与开发人员同步,而不是通过电子邮件沟通;积极参加scrum会议以提高团队的决策能力,与团队的计划保持一致,从而使他们的活动保持一致等等。 一些与其他团队过度交往的测试人员更喜欢挑选低优先级的任务。因为他们需要花费数小时来解决其他团队的问题,却以牺牲自己的工作为代价——这种行为超出了在跨职能团队中作为平等伙伴的边缘。团队成员应该优先解决他们的问题,如果需要的话,为其他团队提供帮助应该是次要的目标。 4.假设并不是一种选择 有时,利益相关者的评审意见显示,团队在验收标准方面存在一些不必要的假设。假设不是特定的对测试人员的选择,因为测试是工作流中的最后一个活动,因此也是团队中任何人验证需求的最后机会。此外,测试人员的专长在于发现有问题的可交付成果。 我了解一些让测试人员陷入不合理假设的根本原因。这些原因是:害怕被人评判他们提出正确问题的能力,对他们以前的问题没有得到适当的答复,沟通能力差,使他们无法抓住任何机会,缺乏一个安全的环境来公开挑战接受标准,或者在积压工作改进会议期间无知,不提出问题需要澄清的问题。 在敏捷项目中,假设的成本太高了,因为产品增量很快就会推出给最终客户——交付的任何缺陷都会影响投资回报(ROI),并需要返工,消耗的预算超过了功能的价值。 迭代经理、ScrumMaster或教练使用诸如5个为什么之类的技术对这些根本原因进行彻底的分析,对于设计有效的指导计划和在随后的迭代中控制这些行为非常有益。

资源下载

更多资源
Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册