从Pycharm说起-程序员宅基地

技术标签: PyCharm  IDE  netbeans  Python  

说实话.作为一个Coder.每天在各种IDE中切换编写Code.如果一个IDE Look and Feel总是无形中影响你每天Code Farm的心情.那该是多么不爽的事情.特别是针对本人对IDE总是有一种天生“洁癖感”.每当一们语言或技术在无意中吸引我.或是已经在粗糙的本文编辑器初体验.都会在两到三天体验期脱离出来.立马调到真正高效率的生成环境去Coding.高效率就意味当然脱不了IDE的支持.

但是每次更换新的Coding环境.可能我会花上一到两天或更多的时间去了解这门语言或技术的背景和使用场景 解决现实问题等.因为这直接影响我决定是否继续下去.如果在这一切如期进行后.我一般也会上一天的时间去完善设置即将迎接新的Coding IDE设置. 没看错是一天的时间! 类似这次进入Python过程 实在是忍不住说点什么.

并非我想吐槽Pycharm.它确实是Code Farm Python的利器.我也是在众多Coder推荐下才尝试的使用它来做开发Python的IDE.在试用第一天我就顶购买正版的license.如果你想问我一般情况一天时间到底花在哪?好吧听我慢慢道来.

首先说说IDE UI界面就是前面提到Look And Feel.

在开辟一个新的技术领域.花了很多时间来判断这门技术或语言是否值得去学.在IDE选择我一直保持一种亲身体验的标准.原来也会查找网上一些对某些IDE评测.后来发现各种不靠谱.还是得自己亲身验证. Coder与Coder之间喜好和习惯真的不一.所以如果真的找到适合自己的.还是乖乖自己去体验吧.类似开发PHP时就用了一个下午时间试用目前市面所有主流的IDE.说说这次的Python吧.

你能在官方Guide文档找到如下一篇文章.Integrated Development Environments Python IDES.

这篇文章如数列举出当前市面所有支持Python IDE工具.别高兴太早.别忘了后面支持列表.因为我下载Python 3.3最新版.但你可以看到只有很少一些IDE支持了Python 3以上版本.well这样也好大大减少选择的范围.

说到对Pycharm UI第一印象.首先这种界面布局总是让人感觉不够Clean. Ps:如下是我调整后的

2013-01-31_180531

IDE在实际Coding过程只需要简单明确三点.

A:当前项目解决方案目录组织结构

B:Code Editor 主界面

C: Debug调试信息输出Console或Error List或错误列表

D:版本控制集成.[状态显示和版本提交]

这四元素基本满足Coding过程的需求.但如果你打开一个IDE突然跳出很多莫名奇怪的小窗口.你还需要了解这些窗口干嘛的. Close掉后如果在需要时我需要跑到那去设置它显示啊? 等等…… 这就像你去了解一个SDK框架中某一个极其微小的功能点时. 你都要加载一大堆或是调用一些你完全不知道做什么或是也不想了解一些实现原理和细节时.这也像本来你只想吃到冰激凌上蓝莓.而对方却给你一个制造冰激凌机器给你感受一样的.

需要和得到的成本完全不成正比啊.

IDE作为工具本身就是解决开发效率、资源协作调度、版本控制这些非常实用的需求.但是 我想说的是但是……请你在搞定这些功能后.能够考虑一下那些每天即将用到这个IDE用户的心情的.能否在实用和UI美观上做一个很好折中. 不要太过丑陋 也不要太过简单粗糙而导致难以操作. 这些Detail也会影响使用者的心情啊.对我来说首先UI要足够的Clean. 当然这是建立功能强大基础上. 特别对于一些布局混乱的IDE 早已经我安装load出界面那一刻后一份中已经卸载掉了.

IDEUI布局有两个极端. 一个是过度的开放.完全拥护定制化. 另外一个纯粹就是鸡肋.开放度低定义一些你完全适应的操作习惯去Coding.类似Pycharm就是前者. Setting界面选项就可见一斑:

2013-01-31_182618

密密麻麻的操作选项被横贴在一块……

前者的代价是在复杂度高.如果你觉得你做一个产品. 需要学习的一门工具.而如果这个工具除了徒增的复杂度和极高学习曲线.生产效率和斧头无意. 那这样设计就有问题. 另外一种.就是让你适应它规定Role.这就像每天有人盯着你用双手叫你画画一般.在好的才华和技艺也会在这种规则当然无存.相对前者我更痛恨是后者. 关键词 Open.

类似上面选项横排. 满眼的信息 排版显得极为混乱.用户关注度在界面呈现出后就已经失去焦点了. 大多早已Confused掉了.做好IDE布局同时能够有一定开放度.

Code Theme:

折腾完页面布局.我一般会立即去下去对应编辑器的Code Theme. 因为大多编辑器默认Code Style都是很丑陋. 高亮和代码颜色都无法匹配都不够合理.如果你常用NEtBeans你也会找到类似的ThemeBuilder定制.

2013-01-31_185415

可惜Pycharm没有.只有简单的内置几个简单的Theme. 对于配色的细节还不够满意.FontSize 和BackGround Color 对比度太高.只能草草设置如下:L

2013-01-31_185532

不知道各位有没有体验”侵入式“Coding体验. 这里还是采用NetBean做对比吧 这是我NetBeans配置的Python的CodeTheme:

2013-01-31_190059

很明显[故意设置Dust]你会看到. Editor编辑器为暗色. 而Solution和Console输出的都是明亮色.这个会照成Coding过程中你的注意力会被这些明亮色干扰.无法真正集中到时常变化Editor. 但是如果我们反过来设置成这样 你会看到:

2013-01-31_190411

你会看到.Solution和Console背景色都比Editor要深. 这样一来Editor明亮色就更容易吸引你的注意力.而这块也真是高效Coding过程变化最大的一块.一般情况我解决一些批量容易处理Coding需求是.很容易在这种IDE设置情况有着一种下沉的侵入式的体验. 这样会把你全部 注意力的焦点转移到Editor上来,. 而往往根据个人经验 这个过程效率往往比较高.

所以你才能感觉Look and Feel用户有多大.其实潜在转移注意的焦点.

当Code Theme是进入这些更细节的一些东西.代码高亮和文本框格式化也是涉及个人操作和细节.我始终是保持一种一种统一的Code Theme Style.这样即使我在不同IDE切换时也会因为Code Theme不同而导致不适应.

第三是Call –Tip 和Auto-Complete

本来最早我体验Python过程是在NetBeans.因为它配置简单.只需要打一个插件包.在NetBeans就有了Python的开发环境.其实我的本机上什么都没装.但是NetBeans在引入这个Python同时却失去Call Tip的功能.这也是我抛弃NetBeans的一个重要原因. 完全无提示:

2013-01-31_191245

这让我Coding过程出错几率会大大增加.对于那些庞大的类库和方法名 CAll –Tip 已经是无法或缺的.

好吧我曾任在购买Pycharm license之前.我基本使用所有免费的IDE. 是不是太偏执了. 没办法 不过还是要来逐一吐槽一下:

首先使用就是PythonWin Editor 看名字就明白基于Windows. 选着使用主要因为它的Call Tip功能强大.只需要Import一个包. 然后F5一下所有函数和变量都能Call –Tips出来,很强大.但痛苦的是不能用来编写wxPython.

Eric4也是一个很小众的工具.但是我还是用了. Call-Tips功能极弱.而且恶心的是必须先把导入打包用它的工具API Generator 生成API. 最无语的是只能对包里的类和函数进行Call-Tips提示. 这是个巨大缺陷. so give up

WingIDE的Auto Complete和Call Tips功能都很强大. 比PythonWin要强很多/.它不仅能够提示代码.还能在右侧的工具里显示Doc.不过期Pro是商用版.我只是采用试用. Free版本恰恰就少了这两个及其重要的功能.

Kodomo当然不陌生了. ActiveState出的IDE. tip功能一般.关键是免费版本的是不能调试的. 况且关键是原来在开发Php时我对这个工具就没有好感.就是因为支持Python原因继续玩弄一下 果断卸载了.

剩下就是Vim+Emacs 这个都是神器.不用多说.这个篇幅会放在下篇.当然除了如上这些.还使用一些PyScript一些轻量级的IDe 但是Call –Tips功能都不太满意啊. 都在PythonWin之下.果断不理.

说道这还好Pycharm对Call Tips和Auto complete功能都很完整.对Debug调试支持也很好.也是我愿意付费一个重要原因.

第四 快捷键.

对于一个注重全键盘操作Coder来说.如果编辑器不支持这个. 这也是我果断抛弃的原因之一.

现在基本所有IDE都支持快捷键.但是如果你具有数量Vim.并不想破换中操作习惯该如何? 好的IDE是继承这些操作快捷键并且可以修改和定制.而大多数IDE基本不会考虑这些.如果需要Visual Studio 和Vim切换.转换新的IDE这就需要一个新的过程. 所以快键键保持和定制直接影响coding效率.

说了这么多.其实开始一门新技术.找到一个好用IDE真的不简单.特别对于我这种吹毛求疵 有洁癖的用户.那更是得非一般功夫.吐槽这么多.还是希望Support IDe功能能真正做到好用 Clean. 美观.这真的是梦想一件事. 如果你每天觉得用IDE都是一件快事. 想不提高开发效率都难啊.

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/sq_sh1987/article/details/53374540

智能推荐

Python 2.7.18 发布,Python 2 时代是真的结束了-程序员宅基地

来源:开源中国 链接:https://www.oschina.net/news/115036/python-2-7-18-released今年 1 月 1 日的时候,Python ..._python2.7.18好用吗

select * from a,b是否为内连接?_select from a,b 相当于内连接么-程序员宅基地

https://blog.csdn.net/qingmengwuhen1/article/details/73611537今天代码中写脚本用了select * from a,b where a.id = b.id.然后同事说让我写内连接,我说这就是内连接啊。结果同事说这怎么会是内连接,这是笛卡尔乘积。我当时有点惊呆了,在原来公司都是这样写啊,难道这不是内连接,后来百度一下,发现:单纯的se..._select from a,b 相当于内连接么

SpringCloud security +oauht2.0 授权码(authorization_code)模式+jwt 实现微服务的认证和授权(一)_java springcloud oauth2.0 授权码模式-程序员宅基地

1.授权码模式讲解1.1:根据图片 我们看的出来 用户认证以后 我们拿到授权码 根据授权码 去获取token,那这个认证的过程 我们就不用去做了,我们只管用户登录成功以后 我们来拿到token1.2:把password模式修改成 authorization_code 模式password模式 如果你是看我这个文章来的 我们只需要 修改以下内容,如果你是新来了,可以去我的gitHub看这篇文章的源码 源码地址1.3:修改 WebSecurityConfig 文件package com.exa_java springcloud oauth2.0 授权码模式

unity自动寻路-程序员宅基地

首先创建一个简易场景。第二步,选择地面及搭建的道路,将Static设置为Navigation Static复选框,unity就会通过选中的对象生成导航网格:第三步:选择菜单栏中的Window—>Navigation命令,弹出Navgation视图。然后选择Navgation视图中的Bake按钮生成导航网格,然后它的可行走地面会变成蓝色透明状。第四步:创建一个可移动的物体,这里就用一个正方体代替,为其添加NavMesh Agent组件。组件基本信息介绍Base offset:与地面偏移_unity自动寻路

PHP直播平台源码实现商城购物车-程序员宅基地

由于受疫情的影响,直播行业的发展也迎来了新变化,众多明星网红纷纷加入直播带货的行列,面对市场的变化,也要求直播行业随之改变,用的最多的当属商品的购物车功能了,下面我们就来分析下购物车的原理。购物车的模块其实可以按照用户行为去将需求拆解,用户使用购物车可以分解成如下几个情况1)添加购物车(与服务器同步)2)查看购物车(服务器获取购物车列表并与本地同步)3)修改购物车商品的购买数量(与服务器同步)4)删除购物车(与服务器同步)5)购物车商品提交订单(与服务器同步)下面 我们分析下添加购物车功能:

Postman测试@RequestBody注解参数的API接口_翱翔于世纪的博客-程序员宅基地

开发的时候,使用Postman测试其他伙伴的API接口时,该接口参数使用了@RequestBody注解,不知道在Postman怎么传递这个参数。接口如下:经过分析得到,LoginParm是自己定义的一个实体类,里面声明了account用户、password密码。然后自己百度了一下,@RequesBody注解的使用是常用来处理content-type不是默认的application/x-www-form-urlcoded编码的内容,比如说:application/json或者是application/xm

随便推点

android逆向工程dex2jar使用_dex2jar 多个dex_言并肃的博客-程序员宅基地

android逆向工程dex2jar使用framework 静态 jar 包生成方法:dex2jar-2.1-AndroidN 以后使用.zip 解压,直接在ubuntu 上面使用。将out/target/product/LGO_demo/obj/JAVA_LIBRARIES/mediatek-framework_intermediates/javalib.jar 拷贝到 dex2jar 目录Android 8.0 需要先将 jar 转成 dex,然后再转为静态 jar,可以在 AndroidSt_dex2jar 多个dex

linux 键盘描述符,USB HID Report Descriptor 报告描述符详解-程序员宅基地

Report descriptors are composed of pieces of information. Each piece of information is called an Item.报告描述符由一些数据片组成。这些数据片被叫做Item。All items have a one-byte prefix that contains the item tag, item type,..._report descriptors

elasticsearch高级配置之分片分布规则设置-程序员宅基地

Java代码 cluster.routing.allocation.allow_rebalance 设置根据集群中机器的状态来重新分配分片,可以设置为always, indices_primaries_active和indices_all_active,默认是设置成indices_all_active来减少集群初始启动时机器之间的交互。 Java代码

修改jar包中的文件-程序员宅基地

需求:工程引入的某一个jar不满足我的开发需求,需要修改jar中的代码。1.下载jar对应的源码,新建一个java工程(maven),将jar中的文件放入新建工程中,不报错就行了(目的是修改完之后可以编译,不需要跑起来)2.修改你需要修改的java文件3.编译当前工程(mvn install)4.在编译好的jar中取出修改了的.class文件5.将原来不满足需求的jar解压出来放入.cl..._修改jar包中的文件

linux 终端前缀太长怎么办 or 如何在linux终端中进行指令换行-程序员宅基地

在一条指令的行尾输入 然后回车即可_终端前缀太长

matlab坐标轴的分割线向外,matlab给坐标轴里加上额外的横线和竖线_苏语璇呐的博客-程序员宅基地

function PlotTest()clc;clear all; close all;x = [1:.1:2 2:0.2:4 4:0.1:8.2 8.2:0.2:9.8 9.8:0.1:4*pi];y1 = sin(x)./sqrt(x);y2 = sin(x);CreateMySpecialFigure(x,[y1;y2]);function CreateMySpecialFigure(X1,...