大约3年前,我对编写代码的方式进行了重大更改。在我看来,在很多情况下,我的IDE减慢了我的工作,而不是帮助我工作。因此,我做出了彻底删除它的决定。
当然,许多人听到此消息后会感到震惊,并且绝对不建议每个开发人员都这样做。在本文中,我将首先分享删除IDE的动机,在没有IDE的情况下如何前进以及还有谁可能希望将此作为选择。
准备好了吗?
我删除IDE的5个理由
1.系统性能
我同时使用多种编程语言:用于服务器的Java,用于某些客户端的C ++,用于前端的JavaScript + CSS + HTML,以及用于某些自动化任务的Groovy + Bash。为每种语言运行多个IDE需要太多资源(即CPU / RAM),这会导致运行我正在开发的实际程序时出现问题。一些IDE有时会冻结,而另一些则崩溃了。综上所述,编译、链接和发布代码花费了太长时间。
另外,每次重新启动计算机都花了很长时间才能预热,因为它试图运行许多IDE。为了避免长时间的等待,我开始将计算机置于睡眠模式几个月而不是关闭,这导致操作系统随着时间的推移变得越来越慢。
2.系统的可靠性
如上所述,当您使用IDE时,您必须毫无理由地处理它的崩溃。这种情况发生在我身上,尤其是在Eclipse和XCode中,但也发生在其他IDE中。
有时,程序中的异常会导致IDE中的错误或意外行为。在大多数情况下,clean + build或clean + publish均可解决此问题,而其他时候,您必须关闭IDE,清理其元数据并从头开始进行配置。
例如,有些时候我就是无法停止服务器,可能是因为我的代码中有一个bug,但是有理由期望IDE能够理解我正在进行开发,并且允许我在出现bug时终止进程。
3.多种环境
我的日常工作需要我在构建特性、代码审查和修复bug之间切换。我希望在不同任务之间切换的行为是廉价的(及时的),并且能够同时处理许多事情。有了IDE,这就更难实现了。原因有二。首先,因为它使用了大量的CPU、RAM等。其次,同一个IDE的多个实例可能会相互干扰。
最重要的是,在工作期间在分支之间进行切换时,由于我同时处理功能和错误,这经常发生,这花了我很多时间来重新索引代码并为工作做好准备。
4.在远程服务器上工作
对于我的工作,有时我必须在多个远程计算机上运行多个服务器,并对它们运行测试。我不喜欢构建一个软件包并安装它仅用于测试。我更喜欢使用这些机器,就像它们是我的一样,并且在没有IDE的情况下工作会使这项任务变得容易得多。
不过,使用我最喜欢的文本编辑器(Sublime)而不是使用vim或其他基于命令行的编辑器来编辑代码更加舒适。我通过结合使用rsync,git push / pull,sftp甚至只是复制/粘贴到vim中来克服了这个问题。
5.辅助功能
即使使用自定义快捷方式对IDE进行了完全配置,仍有一些操作需要使用鼠标。问题在于,即使只是将手从键盘移到鼠标上进行排序,调整视图大小或将键盘焦点移到IDE的特定部分上,也会使您的速度变慢。这是个人喜好问题,但我希望尽可能避免这种情况。
关于IDE的另一件重要的事情是它从屏幕上占用的空间:一行用于窗口标题,另一行用于菜单,另一行则用于工具栏。这甚至是在打开的文件之间的标签切换器启动之前。这导致代码本身被限制在屏幕的一部分,而且在上面工作很不舒服。
因此,你删除了IDE —接下来需要做什么?
1.了解IDE函数
首先,您必须了解IDE的功能,如何编译代码,如何将其发布到服务器以及文件在文件系统中的组织方式。对我来说幸运的是,OverOps使用了可以从命令行直接运行的标准构建工具,例如Gradle、CMake、Bash和Groovy。
因此,我从命令行运行这些工具,并结合使用Bash命令以发布和运行OverOps。基本的文件操作命令(例如cp,mv,rm)来操作文件,然后可以使用less、nohup、kill、ps、htop等命令来监视和控制程序。就像在生产环境中完成一样。
2.构建自己的工具
一段时间后,您将开始认识到最常用的命令,并且可以开始为它们创建一些别名。
对于我自己的工作,我将这些别名放在〜/ .bashrc文件中,该文件会自动包含在每个Bash会话中。一旦文件变大并包含更多有价值的别名,我认为是时候备份它了。我创建了一个新的私有git存储库(用于它的bitbucket),并将文件放在那里。我将存储库克隆到本地目录,并使用source
命令从〜/ .bashrc文件将其包括在内。
在这一点上,我开始真正享受这种没有IDE的工作方式。因此,我认为是时候像在普通代码中那样,花更多的精力对文件进行模块化了。我创建了一个主文件以包含较小的文件。每个文件都有一个作业,例如git.sh
包含与使用git相关的所有别名和功能,同时docker.sh
包含使用docker的基本命令。也有一些通用文件包含与任何特定程序无关的别名和功能,还有一些与我从事的项目中特定组件有关的文件族,例如moduleXXX.sh。
3.发现你的IDE无法做的事情
种工作风格的一个有趣之处在于,您可以创建执行复杂任务的脚本,而这些任务是您无法想象作为IDE的一部分的。您可以创建自动构建、运行、调用一些内部代码、等待关闭和最后检查错误代码的过程的函数。所有这些只需一个简单的命令。当然,这也可以通过在IDE中创建一个插件来实现,但是编写一个插件要比编写一些Bash函数花费更多的精力。
我在公司领导的主要项目之一就是一个很好的例子。我们需要将代理程序移植到AIX平台,但是起初我们找不到在GUI上运行X Server的简便方法。但是,如果没有IDE,这不是问题。我只是在那台机器上安装了Bash并像我自己的开发机器一样对其进行了处理。
那时,我意识到在没有IDE的情况下工作的真正力量在于远程机器。我可以在许多机器上对我们的产品运行基准测试,并测试网络问题,例如负载平衡、防火墙等。如果出现错误,没问题,我只需添加一些调试打印并重新开始。重建周期减少到不到一分钟,而无需使用构建机器来重建调试版本。
谁应该考虑在没有IDE的情况下工作?
在没有IDE的情况下工作并非易事。它需要您正在使用的技术的深刻知识,另外,您还需要熟悉所用操作系统的外壳环境。
不使用IDE的学习曲线要比使用IDE的学习曲线陡峭,因此不建议初学者使用。同样,如果没有IDE,那么通过工作获得的好处将是不值得的。通常,初学者无需在远程计算机上工作或在任务之间跳转。
这种工作方式更适合经常在任务之间跳转的技术主管。需要为某些新功能运行概念验证(POC),修复生产中的错误并在几小时内检查新开发的功能的人员。在这些情况下,如果在多个环境中工作,则任务之间的上下文切换要便宜得多。
它对于执行Ops任务(例如基准测试、生产中的错误调查、网络或需要在远程计算机上运行的任何任务)的开发人员也可以很好地工作。
不使用IDE进行开发中的调试
调试是另一回事。就个人而言,我从来都不是IDE调试器的忠实拥护者,因为调试技能非常特定于语言、IDE和操作系统。这就是为什么即使在使用IDE时也很少使用调试器的原因。相反,我更喜欢使用调试打印。它们在每种平台上都适用于每种语言。代码的建模方式应可帮助您轻松运行部分代码,而无需为其运行整个服务器。对此有帮助的一些事情是避免共享状态并使组件分离。
幸运的是,决定不使用IDE进行工作不会影响您在生产或预生产(阶段)中进行调试的方式。这只会改变您的后端开发工作流程,因此所有当前的监视工具都将照常运行(这意味着您仍然可以使用OverOps!)。
最后的想法
关于重构,我想说的是,使用IDE,代码重构肯定更容易,因为他们有对它的内置支持。没有IDE,我使用regexp或其他一些小型专用脚本,这取决于特定的任务。但是,使用regexp进行重构将使您成为这方面的专家,而且这是一个非常容易掌握的工具。Sublime是我使用的主要文本编辑器,它可以非常快速地索引上千个文件,并且允许您在不到一秒的时间内找到/替换。
我不会试图说服您每个开发人员都应立即删除他们的IDE,并按照我的方式开始工作。除了首次配置环境(可能需要数周)外,您仍然不时需要停止维护,添加一些别名,删除其他别名,添加对新部署机制的支持等。
对于任何可以轻松使用IDE的开发人员,不建议这样做。但是,对于那些经常对IDE的性能和功能感到恼火的人来说,您应该知道有一种方法可以解决这个问题
原文链接:https://dev.to//overopshq/why-i-deleted-my-ide-and-how-it-changed-my-life-for-the-better-hli