【转】Xcode重构功能怎么用我全告诉你
原文网址:http://www.cocoachina.com/ios/20160127/15097.html
你会经常需要重构你的代码,让它有更好的结构,可读性或者提高可维护性。Xcode作为IDE其实提供了一些帮助dev重构的功能。你以前可能没有注意到,今天我来给大家介绍一下Xcode中提供的这些帮助重构的功能的使用。
我先插一句:有些新手可能不太理解什么是重构,为什么重构,如何重构。作为一个老司机我就给你们指指路。程序员必读之:重构:改善既有代码的设计。这个是亚马逊的链接。如果没有读过可以下单了。
Xcode提供了以下几个重构功能:
Rename
Extract
Create Superclass
Move Up
Move Down
Encapsulate
在菜单栏中的位置如下图:

在代码区里直接右键也能出现重构的相关菜单:

下面就分别介绍这些重构功能的使用。
Rename:重命名
几乎可以试用所有symbol:类名,方法名,函数名,属性名等。使用起来非常简单,选中一个要命名的符号后,选择rename,就会弹出一个输入框让你输入要想要的新名称,输入完成后点击preview可以预览一下。

修改一个属性名称后的预览
Extract:将代码抽取为一个单独的方法或函数
选中一段代码后(可以包括注释),选择Extract,会分析你选择的代码段后自动生成方法签名。你可以修改方法名,如果参数、返回值不正确也可以自己再修改。

如果选择了function,就是另外一种格式:

在预览时如果发现有些需要调整,可以直接在预览框编辑。
下面是抽出一个doubleValue方法的预览:

Create Superclass:创建父类
这个很好理解了,就是创建一个当前类的父类。要注意的是要选中类名的时候才能成功触发。
需要注意的是预览界面最左边的导航区,选择中间一个是这次重构会影响到文件列表。可以点击到这个tab下查看其它类的改动。

如果有警告,会默认显示警告的tab。

Move Up & Move Down
Move Up:可以将一个方法、实例变量移动到父类中去。触发时和重命名一样,要选中实例名或者方法名后才能正常使用。在category中不适用。
Move Down:相反,将选中的实例变量移动到子类中。是的,方法就不能移到子类了。逻辑上很难理解为什么是这样。但是苹果爸爸就是这么任性。
Encapsulate:封装
这是一个令人怀念的词,多年后看到还是会想起期末考试里面向对象三大特点的填空题。
这个的作用是在你选中一个变量后,会自动帮你生成get、set方法。
下面是我将variableStr变量封装后的预览:

一些新手可能不太理解这个功能。因为在声明property时就已经自动生成了get、set方法。所以这个功能应该是有点过时了。
如果用过eclipse的同学可能要呵呵了,这个我们懂。
一件悲伤的事
以上这些重构功能并没有快捷键。
虽然好像有我也记不住啊!
别这样,白要谁不要。
那么如果我就是装逼快捷键党,不想让别人知道我选用了这个功能怎么办呢?
也许全世界你也可以忘记,至少还有key binding值得你去珍惜:

refactor-keybindings.png
一件更悲伤的事
喜新厌旧的我在使用swift时,选择了一个extract后,出现了下面的提示框。

我心中:

【转】Xcode重构功能怎么用我全告诉你的更多相关文章
- [转]Xcode的重构功能
Xcode提供了以下几个重构功能: Rename Extract Create Superclass Move Up Move Down Encapsulate 在菜单栏中的位置如下图: 在代码区里直 ...
- Xcode菜单功能中文翻译
Xcode菜单功能中文翻译 File 文件 Edit 编辑 View 视图 Navigate 导航 Editor 编辑 Product 产品 Window 窗口 Help 帮助 File 文件 ...
- Eclipse 中的重构功能
Eclipse 中的重构功能使其成为了一个现代的 Java 集成开发环境 (IDE),而不再是一个普通的文本编辑器.使用重构,您可以轻松更改您的代码,而不必担心对别处造成破坏.有了重构,您可以只关注于 ...
- eclipse 重构功能。
1. Rename Rename重构的功能就是重命名Java元素.虽然可以通过手动修改文件的文件名或其它Java元素的名称,但这种方式不会更新与此Java元素相关联的引用,用户必须手动查找和此Java ...
- Eclipse 重构功能的使用与重构快捷键
重构是什么? 在代码写好之后改进它的设计. 重构分类:物理结构.类层次结构.类内部结构. 名称 快捷键 直译 作用范围 描述 Rename Alt + Shift + R 可以对任意变量.类. ...
- js中JSON的解析(将json字符串转化为对象)和序列化(将对象转化为json字符串)(函数的功能一般都挺全的,需要的时候去查看完整函数)
js中JSON的解析(将json字符串转化为对象)和序列化(将对象转化为json字符串)(函数的功能一般都挺全的,需要的时候去查看完整函数) 一.总结 1.JSON解析:JSON.parse(myJS ...
- vue实现功能 单选 取消单选 全选 取消全选
vue实现功能 单选 取消单选 全选 取消全选 代码部分 <template> <div class=""> <h1>全选框</h1> ...
- elasticsearch补全功能之只补全筛选后的部分数据context suggester
官方文档https://www.elastic.co/guide/en/elasticsearch/reference/5.0/suggester-context.html 下面所有演示基于elast ...
- 写个发邮件的功能php的(全代码)
---恢复内容开始--- 正好做了个项目,需要在线留言,一般在线留言发邮件是很常见的方式,一开始从网上搜了很久都没有很全的,也有全一点的,但是也不能用,运行不成功,下面给大家分享一下运行成功了的全部代 ...
随机推荐
- os.walk获取同级目录具有随机性
1.在不同机器上,相同内容的目录和文件,os.walk获取结果中路径的先后顺序具有随机性. 2.查看os.walk源码得知,listdir具有随机性. 3.修改该源码,对listdir结果排序后,使得 ...
- free -m
free -m total used free shared buffers cached Mem: 7760 1572 6187 0 9 ...
- jQuery—一些常见方法(2)DOM操作【insertBefore(),insertAfter(),appendTo(),prependTo(),before(),after(),append(),prepend(),remove(),on(),off(),scrollTop()】
一.insertBefore() 如下代码:找到span标签,将span标签剪切到div的前面 <!DOCTYPE html> <html lang="en"&g ...
- 尚学堂JavaEE项目备选
偶然得知:记下待练 微博 软件人才网 论坛 博客系统 京东网上商城 赶集网 拉手网 优酷视频 百度知道(问答) 生产管理系统 房屋租赁网 金融股票
- 使用Adobe Photoshop CC 2015批量修改图片尺寸
最近在工作中遇到一个问题,当时客户给的图片尺寸与我要求的图片不符,由于图片非常的多,如果一张一张的修改,十分的麻烦,后来经过一位同事的指点,发现Adobe Photoshop CC 2015可以实现批 ...
- iOS之内存管理浅谈
1.何为ARC ARC是automatic reference counting自动引用计数,在程序编译时自动加入retain/release.在对象被创建时retain count+1,在对象被re ...
- 【PHP ThinkPHP框架】小bug汇总[更新]
目录结构 1.函数调用 2.绑定select下拉框数据 3.PHP查询功能 4.格式化时间和价钱 5.IF标签比较两个变量 6.eq标签比较两个变量 7.新增信息或者修改信息的自动验证和自动填充 8. ...
- 伪装隐藏Nginx,PHP版本号提升服务器安全性
可能有时候我们看某些站点想知道别人在使用什么版本的web服务器之类的信息时,却发现并未显示版本号,甚至连WEB服务器都有变化,可以通过以下 方法来隐藏Nginx.PHP的版本号信息,来提升一定的安全性 ...
- Python设计模式——单例模式
单例模式是日常应用中最广泛的模式了,其目的就是令到单个进程中只存在一个类的实例,从而可以实现数据的共享,节省系统开销,防止io阻塞等等 但是在多进程的应用中,单例模式就实现不了了,例如一些web应用, ...
- hdu 4300 Clairewd’s message KMP应用
Clairewd’s message 题意:先一个转换表S,表示第i个拉丁字母转换为s[i],即a -> s[1];(a为明文,s[i]为密文).之后给你一串长度为n<= 100000的前 ...