当前位置: 首页 > news >正文

我与Jetbrains的这些年

clipboard.png

前言

本章主要说一下如何去使用Jetbrains的各类工具,并且在上周参加了Jetbrains开发者日的大会,把参会的感受和体验在这里分享给各位。话不多说,我们进入正题。

使用

想必各位一定使用过Jetbrains的任意一款产品,就算没用过也应该听说过吧。Jetbrains从开始至今总共分为三大模块

  1. Developer Ide (集成开发工具)
  2. Language (Jetbrains的开发语言 Kotlin)
  3. DevOps (任务管理,持续集成,持续部署的一些东西)

对于Developer Ide我推荐使用Jetbrains ToolBox,它是管理所有Jetbrains Ide的工具。

clipboard.png

Jetbrains平均一个月做一次小更新,安装了Jetbrains ToolBox就不必再去关心更新的事情了。并且Jetbrains ToolBox 还提供了项目列表的功能,如果这时候你需要打开一个项目,你无需去关心项目是哪种开发语言做的,只需要打开它并选择你需要开启的项目即可。

clipboard.png

这里要注意,使用Alfred的同学,Jetbrains ToolBox将Ide安装的目录不在是/Application而是~/Application,要记得加入到可搜索列表中,否则是找不到启动文件的。

以PhpStrom为例,来讲解一下Jetbrains Ide的一些有趣的配置。

快速编码

这在Jetbrains开发者日上范老师讲过的一个技巧,你需要打开

Preferences -> Editor -> {General->Postfix Completion || Live Templates}

General->Postfix Completion 与 Live Templates 都是为了去提供编码速度的设置。首先我们先看下 Live Templates

clipboard.png

当你在输入fore时按空格(当然也可以选择回车,Tab键,这是需要设置的)

clipboard.png

就会出现完整的foreach语句,你可以把他当做填空题去完善这个结构

fore 
----> 
foreach ($ITERABLE$ as $VAR_VALUE$) {
    $END$
}

当然还有一些其他的例如 eco -> echo , prof -> 创建一个protected的类方法。Ide默认已经为我们准备了一些常用的简写方法,涵盖了至少你知道的所有语言。当然如果没有你想要的你也可以自行添加新的模板。

clipboard.png

真不愧叫 Live Templates,第二个来介绍下General->Postfix Completion,这个对于第一个来说是另外一种编辑,第一种是通过键入初始化命令来生成模板,例如eco -> echo ,第二种则是以对象形式去便捷的去生成模板。下面举个栗子

clipboard.png

当你键入 $a.notnull 则生成 if ($a !== null) {}

$a.notnull
---->
if ($a !== null) {

}

在编码的时候不是每次都会想好整个流程结构在开始编码,所以Live Templates 就有一定的局限性了。这时候 General->Postfix Completion 就起到了很大作用。最后我们介绍 File and Code Templates , 在快捷生成编码及后续生成代码是在编码开始时的一些骚操作,为了将编码更快,我们还需要将常用的文件模板加入其中

clipboard.png

例如你长期使用Laravel框架去开发应用,在使用laravel写一个功能的时候我们会经历下面几个步骤

声明一个路由 -> 创建一个Controller,Model,Action ... 文件 -> 调用Model操作数据 -> 返回给用户结果

如果你使用PhpStrom你大致这样写

  1. 打开路由文件 router+空格 完成一个路由结构的自动生成 (当然你需要提前设置)
  2. 创建一个 Php Controller,Model,Action 文件,文件结构已经设置好
  3. 使用General->Postfix Completion设置好的写法分分钟解决所有操作

Database

PhpStrom内置了Database,面板十分简洁易用。他面板的右上角
clipboard.png
有兴趣你可以去试试

Api

细心的朋友一定知道PhpStrom内置了接口测试工具,他在 Tools -> Http Client -> Test RestFul Web Service 下。

clipboard.png

临时的测试你不必打开万能的Postman,你完全可以通过ide内置的测试工具去完成api测试。当然还有另外一种更厉害的方式 -> 创建一个 test.http 文件

GET www.baidu.com

clipboard.png

像上述这样,点击运行你将获得Response

GET http://www.baidu.com

HTTP/1.1 200 OK
Date: Fri, 23 Nov 2018 05:19:42 GMT
Server: Apache
Last-Modified: Tue, 12 Jan 2010 13:48:00 GMT
ETag: "51-47cf7e6ee8400"
Accept-Ranges: bytes
Content-Length: 81
Cache-Control: max-age=86400
Expires: Sat, 24 Nov 2018 05:19:42 GMT
Connection: Keep-Alive
Content-Type: text/html

<html>
<meta http-equiv="refresh" content="0;url=http://www.baidu.com/">
</html>


Response code: 200 (OK); Time: 71ms; Content length: 81 bytes

当然对比Postman依旧不逊色,既然已经将软件改为编码形式,那在Postman内的功能,我们在.http文件中很方便的就可以实现。可以添加请求参数

GET http://www.baidu.com
Content-Type: application/json
{
"name":"zhangsan"
}

每个请求以下一个请求方式前结束。具体请移步官网查看。

主题

工欲善其事,必先利其器。上面说的Jetbrains提供的功能只是冰山一角,想要具体的学习如何使用还请移步官方。帅气的UI也是调整开发效率的一部分。看到自己的ide非常漂亮,编码的心情自己好的不得了。我使用的是 Material Theme UI

clipboard.png

关于字体的调整可以在 Editor -> Font 下进行

clipboard.png

当然如果你不仅仅从事PHP相关的开发,好不容易配置出来一个自己满意的IDE,写Go的时候用Goland还要配置,大可不必这样。你可以通过 File -> Export Settings 来导出你的配置

clipboard.png

随后在通过 File -> Import Settings 来导入你的配置。这样就OK了。如果你购买了 Jetbrains 全家桶或者任意的Ide,也可以通过File -> Sync Settings To Jetbrains Account 来同步到你的Jetbrains账号,类似于云同步一样。

便捷

剩下的就是快捷键了,快捷键乃IDE编码之本,什么?不需要? 那你咋不用Word编码去?快捷键我就不总结了,网络上太多了。下面贴出laravel-china一位大神的总结。

https://laravel-china.org/top...

大会

以上说了一部分大会的内容了。Jetbrains的开发者日也并不是全部商业宣传,至少它做的事情是值得让开发者认可的。PPT无法分享给各位,我也不知道怎么拿到。抱歉!大会主要将了以下几项内容,上午是主会场,下午分俩个会场 Kotlin & Java 和 Web,作为一个PHP程序员,我没得选。


上午

  1. 大会开始,说了很多关于他们的语言 Kotlin 的使用方法。
  2. 随后说了Jetbrains内部的工作方式及管理方法
  3. 开始ide -> Kotlin 显示 Kotlin特性

下午

  1. 简洁高效的PHP编程指南,推荐了一下测试、调试方法&类库及PhpStrom的使用方法
  2. 在真实世界中进行 Go性能优化 讲的go pprof
  3. 用TDD学习高效开发 开始这大佬写了一通的java测试用例,不咋能看懂。后面说了一些关于程序人生的事情
  4. JetBrains的无痛DevOps解决方案 最后讲了JetBrainsDevOps的一些套件,例如TeamCity (与TravisCi类似) ,Upsource 等等。具体可参考 https://www.jetbrains.com/dev...

总而言之,总体下来大多都是干货,至少我感觉没有任何商业宣传的性质。

致谢

到这里本章就结束了,感谢看到这里,不过我还要提醒一句给各位开发者

编辑器不要汉化
编辑器不要汉化
编辑器不要汉化

相信你可以明白。谢谢!

相关文章:

  • input实现文字超出省略号功能
  • 复习Javascript专题(四):js中的深浅拷贝
  • stackoverflow:为什么排序后的数组要比未排序数组运行快3倍以上?
  • 胡小林:把日常生活中碰到的事变成我们发露忏悔的机会
  • 分布式消息队列 Kafka
  • 网站如何做好SEO优化,该怎么选择SEO软件?
  • JAVA入门到精通-第67讲-sqlserver作业讲评
  • Tcp/Ip 三次握手与四次挥手
  • jQuery操作表格(table)的常用方法、技巧汇总
  • [转]GitLab Continuous Integration (GitLab CI/CD)
  • 实战开发正则归纳
  • Android Activity生命周期图解
  • JavaScript权威指南手记(一)
  • 阿里巴巴下一代云分析型数据库AnalyticDB入选Forrester Wave™ 云数仓评估报告 解读...
  • 美团容器平台架构及容器技术实践
  • CSS 提示工具(Tooltip)
  • dva中组件的懒加载
  • Javascripit类型转换比较那点事儿,双等号(==)
  • js操作时间(持续更新)
  • JS基础之数据类型、对象、原型、原型链、继承
  • PHP CLI应用的调试原理
  • Quartz实现数据同步 | 从0开始构建SpringCloud微服务(3)
  • scala基础语法(二)
  • spring学习第二天
  • STAR法则
  • Vue.js源码(2):初探List Rendering
  • win10下安装mysql5.7
  • 从零到一:用Phaser.js写意地开发小游戏(Chapter 3 - 加载游戏资源)
  • 浮动相关
  • 构建二叉树进行数值数组的去重及优化
  • 后端_MYSQL
  • 力扣(LeetCode)965
  • 使用common-codec进行md5加密
  • 手写一个CommonJS打包工具(一)
  • 跳前端坑前,先看看这个!!
  • 小程序、APP Store 需要的 SSL 证书是个什么东西?
  • 小而合理的前端理论:rscss和rsjs
  • 译有关态射的一切
  • 智能网联汽车信息安全
  • 带你开发类似Pokemon Go的AR游戏
  • #if 1...#endif
  • #LLM入门|Prompt#3.3_存储_Memory
  • #NOIP 2014#day.2 T1 无限网络发射器选址
  • (floyd+补集) poj 3275
  • (Matalb回归预测)PSO-BP粒子群算法优化BP神经网络的多维回归预测
  • (MATLAB)第五章-矩阵运算
  • (Spark3.2.0)Spark SQL 初探: 使用大数据分析2000万KF数据
  • (附源码)spring boot公选课在线选课系统 毕业设计 142011
  • (附源码)基于SpringBoot和Vue的厨到家服务平台的设计与实现 毕业设计 063133
  • (每日持续更新)jdk api之FileFilter基础、应用、实战
  • (三分钟了解debug)SLAM研究方向-Debug总结
  • (转)Google的Objective-C编码规范
  • (转)Linux NTP配置详解 (Network Time Protocol)
  • (最简单,详细,直接上手)uniapp/vue中英文多语言切换
  • ..thread“main“ com.fasterxml.jackson.databind.JsonMappingException: Jackson version is too old 2.3.1