当前位置: 首页 > 科技观察

软件工程师必备的五种生产力提升方法与实践_0

时间:2023-03-21 13:21:51 科技观察

【.com快译】在全球疫情持续蔓延的今天,人们往往希望用各种生产力提升方法来代替目前无法进行高效的面-面对面的协作状态。在本文中,我们讨论了软件工程师和技术公司可以提高工作效率的五种实用方法,包括:设计系统、代码检查器、代码格式化程序)、持续集成和IaaS/PaaS平台(IaaS/PaaS提供商)。它们可以帮助您加快整个开发周期和交付过程,而不会牺牲软件产品的质量。设计系统设计系统主要包括各种设计模式、使用指南、文档、所有权模型、沟通方式和产品路线图。我们可以简单地把它理解为一个组件库来创建一个基于可重复使用的积木块(buildingblocks)的产品。这里的构建块主要包括:图标生成器(头像)、徽标、按钮、下拉菜单、输入表单、图标、链接、模式、进度指示器和工具提示。就像乐高积木一样,这些组件可以组合起来创建应用程序所需的所有页面和功能。为了使软件产品的用户界面(UI)随着业务和功能不断扩展,设计系统可以为用户带来以下好处:设计系统可以帮助您创建一致的UI,以便您可以使用统一的构建块成分。设计系统通过提供可以在任何地方实施的通用模式,使设计师和软件工程师更容易加快开发速度,而无需花费数小时甚至数天的时间来重构模式。您可以使用一组共享的组件轻松地在整个应用程序中同时更改所有架构。例如:如果您需要更改应用程序的按钮样式,而不是单独调整每个按钮,您可以简单地在设计系统中统一进行更改,以便在使用相关按钮的任何地方直观地应用。设计系统可以让您更专注于改善用户体验(UX)。用户体验设计师不必花时间弄清楚每个新功能的下拉菜单和模式如何单独工作,而是可以专注于确保它有意义并且整体上对用户友好。目前市面上有很多设计系统工具,包括:Google的Material-UI、Adobe的Spectrum、AntDesign等。当然,如果你有足够的时间和资源,你也可以建立自己的设计系统。CodingViewer上面是ESLintforJavaScript的截图。它通过对代码执行静态分析来帮助自动捕获各种语法错误和潜在的运行时问题。这样的查看器小巧紧凑,可以直接包含在您的构建过程或githook中。毕竟,他们最擅长的是通过自动化执行,发现海量代码中的各种语法和逻辑错误。以上面提到的ESLint为例,它不仅具有高度的可配置性,而且拥有广泛的插件生态。您可以安装ESLint插件,例如eslint-plugin-jsx-a11y,以帮助捕获应用程序中的访问违规;或者安装eslint-plugin-react来帮助实现React的各种良好实践。当然,如果你不想花时间自己挑选插件,你也可以使用一些预设的插件。例如:eslint-config-airbnb插件包,预置了一些Airbnb推荐的ESLint配置项。代码格式化工具Prettier等格式化工具可以格式化和规范化你的JavaScript、HTML、CSS,甚至是各种Markdown文件。与代码查看器类似,代码格式化工具可以自动执行软件工程师否则必须手动完成的各种任务。通过预配置,Prettier可以自动规范化各种应该使用的代码格式,如空格、制表符、分号、逗号等。在节省代码审查时间的同时,团队不仅可以保持整个存储库的一致性和标准化,还可以腾出更多时间专注于代码本身的功能性和可维护性。以下Java代码是Prettier配置的示例:{"tabWidth":2,"useTabs":false,"printWidth":80,"semi":false,"singleQuote":true,"trailingComma":"es5","quoteProps":"as-needed","jsxSingleQuote":false,"jsxBracketSameLine":false,"bracketSpacing":true,"arrowParens":"avoid","endOfLine":"auto","proseWrap":"preserve","htmlWhitespaceSensitivity":"css"}让我们看一个例子。显然,下面的Java程序代码看起来很乱:不要使用randominrenderletnum=Math.floor(Math.random()*1E+7).toString().replace(/\.\d+/ig,"")return{greeting.slice(0,1).toUpperCase()+greeting.slice(1).toLowerCase()}{greeting.endsWith(",")?"":","{greeted}{(silent)?".":"!"}

;}通过使用Prettier,代码将如下所示:}//TODO:Don'tuserandominrenderletnum=Math.floor(Math.random()*1e7).toString().replace(/\.\d+/gi,'')return({greeting.slice(0,1).toUpperCase()+greeting.slice(1).toLowerCase()}{greeting.endsWith(',')?(''):(",")}{greeted}{silent?'.':'!'}
)}自动化测试和持续集成随着应用的复杂度和代码量的增加,我们已经不能自己手动测试目标应用中涉及的所有内容,我们需要分解动作,完成单元测试、集成测试、端到端(E2E)测试以及通过自动化测试进行的回归测试。DevOps理念带来的持续集成(CI)实践可以保证你的代码的主分支在理论上始终处于可执行状态。为此,您可以使用TravisCI、CircleCI、GitLabCI/CD和HerokuCI等服务为您的存储库设置持续集成。在此基础上,可以配置CI流水线在每次提交后运行查看器和自动化测试,然后在满足前面所有条件的基础上实现代码合并。实践证明,与手动测试相比,无论是自动化测试还是持续集成,都可以大大减少整个开发周期所花费的时间。IaaS和PaaS平台在如今的云服务时代,我们必须学会善用基础设施即服务(IaaS)和平台即服务(PaaS)来管理应用基础设施。目前,常见的IaaS平台包括AmazonWebServices和GoogleCloudPlatform。常见的PaaS平台包括Heroku等解决方案。同时,通过使用AmazonRelationalDatabaseService(RDS)等托管数据库服务,您不必考虑数据库升级和安全补丁安装。借助AmazonSimpleNotificationService(SNS,)等通知服务,您无需自行构建发送电子邮件或短信等服务。此外,通过将您的应用程序部署到Heroku平台,您的应用程序将随着使用量的增加自动水平和垂直扩展。原标题:软件工程师和科技公司的生产力工具和实践,作者:TylerHawkins