-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindex.html
194 lines (130 loc) · 8.9 KB
/
index.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="chrome=1">
<title>Hexo</title>
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
<meta name="author" content="John Doe">
<meta name="description">
<meta property="og:type" content="website">
<meta property="og:title" content="Hexo">
<meta property="og:url" content="http://yoursite.com/index.html">
<meta property="og:site_name" content="Hexo">
<meta property="og:description">
<meta name="twitter:card" content="summary">
<meta name="twitter:title" content="Hexo">
<meta name="twitter:description">
<link rel="alternate" href="/atom.xml" title="Hexo" type="application/atom+xml">
<link rel="icon" type="image/x-icon" href="/favicon.ico">
<link rel="stylesheet" href="/css/style.css">
<!--[if lt IE 9]><script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script><![endif]-->
</head>
<body>
<div class="wrapper">
<header id="header">
<div class="title">
<h1><a href="/">Hexo</a></h1>
<p><a href="/"></a></p>
</div>
<nav class="nav">
<ul>
<li><a href="/">Home</a></li>
<li><a href="/archives">Archives</a></li>
<li><a href="/atom.xml">RSS</a></li>
</ul>
<div class="clearfix"></div>
</nav>
<div class="clearfix"></div>
</header>
<div class="content">
<article class="post">
<header>
<div class="icon"></div>
<a href="/2016/05/16/文章预告/">
<time datetime="2016-05-16T12:43:51.000Z">
2016-05-16
</time>
</a>
<h1 class="title"><a href="/2016/05/16/文章预告/">文章预告</a></h1>
</header>
<div class="entry">
<h2 id="接下来一周我会试着翻译developer-android-com网站上关于Gradle编译相关的章节,尽量每天翻译一篇,因为一直比较忙,可能会延期,但是会坚持翻译完的"><a href="#接下来一周我会试着翻译developer-android-com网站上关于Gradle编译相关的章节,尽量每天翻译一篇,因为一直比较忙,可能会延期,但是会坚持翻译完的" class="headerlink" title="接下来一周我会试着翻译developer.android.com网站上关于Gradle编译相关的章节,尽量每天翻译一篇,因为一直比较忙,可能会延期,但是会坚持翻译完的"></a>接下来一周我会试着翻译developer.android.com网站上关于Gradle编译相关的章节,尽量每天翻译一篇,因为一直比较忙,可能会延期,但是会坚持翻译完的</h2>
</div>
<footer class="end-sep">
<div class="clearfix"></div>
</footer>
</article>
<article class="post">
<header>
<div class="icon"></div>
<a href="/2016/03/22/【译】为什么我还不想使用Kotlin来开发Android/">
<time datetime="2016-03-22T14:07:06.000Z">
2016-03-22
</time>
</a>
<h1 class="title"><a href="/2016/03/22/【译】为什么我还不想使用Kotlin来开发Android/">【译】为什么我还不想使用Kotlin来开发Android</a></h1>
</header>
<div class="entry">
<p>原文链接<a href="http://gold.xitu.io/entry/56ea7118731956005d037ef1" target="_blank" rel="external">在此</a>。</p>
<p>尽管Kotlin在许多方面都优于Java,但是还是有重大缺陷的。</p>
<blockquote>
<p>请把它当成个人意见,如果你有这些问题的解决方案请在文后列出</p>
</blockquote>
<h3 id="1)编译缓慢"><a href="#1)编译缓慢" class="headerlink" title="1)编译缓慢"></a>1)编译缓慢</h3><p>小项目(一共约100个class,大部分是Kotlin)需要约1分钟的时间来编译。这是无法接受的。<br><a href="https://youtrack.jetbrains.com/issue/KT-6246" target="_blank" rel="external">https://youtrack.jetbrains.com/issue/KT-6246</a></p>
<h3 id="2-Kotlin-IDEA插件的性能"><a href="#2-Kotlin-IDEA插件的性能" class="headerlink" title="2) Kotlin IDEA插件的性能"></a>2) Kotlin IDEA插件的性能</h3><p>IDEA(Android Studio)中Kotlin的语法分析和高亮常常在输入的时候造成开发机卡顿,不可接受。</p>
<h3 id="3-注解处理"><a href="#3-注解处理" class="headerlink" title="3) 注解处理"></a>3) 注解处理</h3><p>有时候会随机的出错然后就必须<code>clean</code>。几乎每天我都会从不同地方看到抱怨,我不是一个人。</p>
<h3 id="4-用Mockito来模拟Kotlin类很痛苦"><a href="#4-用Mockito来模拟Kotlin类很痛苦" class="headerlink" title="4) 用Mockito来模拟Kotlin类很痛苦"></a>4) 用Mockito来模拟Kotlin类很痛苦</h3><p>在Kotlin中几乎所有东西默认都是<code>final</code>的:类,方法,等等。我喜欢这一点因为它强制要求不变性->更少bug。但是它同时使得通过<code>Mockito</code>(JVM世界的一种标准)模拟变的很痛苦而且背离了语言设计的方向。</p>
<p>是的,PowerMock是一种可能的解决方案,但是它跟一些Robolectric这类的工具关联而且总得来说有一个很好的原则就是你不应该模拟final类和final方法。</p>
<p>我理解Java的问题:所有的东西从设计上就不是final的,但是同时<strong>我不希望仅仅为了测试去修改代码</strong></p>
<h3 id="5-目前还没有Kotlin的静态分析工具"><a href="#5-目前还没有Kotlin的静态分析工具" class="headerlink" title="5) 目前还没有Kotlin的静态分析工具"></a>5) 目前还没有Kotlin的静态分析工具</h3><p>是的,<code>kotlinc</code>为代码增加比<code>javac</code>更多安全性,但是如果你想使编译器达到更高的性能的话,你不会想让它变成静态分析器的。</p>
<p>静态代码分析工具对CI来说很好,但是你也许不想在本地开发时每次点击IDE上的<code>run</code>按钮都运行它</p>
<p>Java有:FindBugs,PMD,Checkstyle,Sonarqube,Error Prone,FB infer。</p>
<p>Kotlin有:<code>kotlinc</code>。</p>
<blockquote>
<p>上面的观点是客观的,我希望。下面的观点更加主观。</p>
</blockquote>
<h3 id="6-是equals-而不是引用比较"><a href="#6-是equals-而不是引用比较" class="headerlink" title="6) ==是equals()而不是引用比较"></a>6) <code>==</code>是<code>equals()</code>而不是引用比较</h3><p>如果Kotlin是“更好的”Java或是“Java吃了兴奋剂”那么它就应该更好,而不是相反。</p>
<p>想象一下你正在用Kotlin重写Java工程,你的工程中会同时有Java和Kotlin代码。</p>
<p>你将会读写工作起来不同的同一套代码。这也是我不喜欢Groovy的一个原因。</p>
<h3 id="7-如果使用不当运算符重载会造成严重后果"><a href="#7-如果使用不当运算符重载会造成严重后果" class="headerlink" title="7) 如果使用不当运算符重载会造成严重后果"></a>7) 如果使用不当运算符重载会造成严重后果</h3><p>说明1:将来你会需要去处理老旧的Kotlin代码基线<br>说明2:通过扩展功能你可以为<strong>已有</strong>的Java类添加运算符重载</p>
<p>现在想象一下你看到一些诸如<code>val person3 = person1 + person2</code>这样已写好的代码需要处理。</p>
<p>你工作的每个工程对于相同的类都可能有自己的运算符意义😿</p>
<p>运算符重载是有争议的,这些链接也许能帮助你决定(不是所有的都指向同一个结论):</p>
<ul>
<li><a href="http://cafe.elharo.com/programming/operator-overloading-considered-harmful/" target="_blank" rel="external">Operator Overloading Considered Harmful</a></li>
<li><a href="http://james-iry.blogspot.ru/2009/03/operator-overloading-ad-absurdum.html" target="_blank" rel="external">Operator Overloading Ad Absurdum</a></li>
<li><a href="http://blog.jooq.org/2014/02/10/why-everyone-hates-operator-overloading/" target="_blank" rel="external">Why Everyone Hates Operator Overloading</a></li>
</ul>
</div>
<footer class="end-sep">
<div class="clearfix"></div>
</footer>
</article>
<nav id="pagination">
<div class="clearfix"></div>
</nav>
</div>
</div>
<footer id="footer"><div class="copyright">
© 2016 <a href="/">John Doe</a>
</div>
<div class="theme-copyright">
Theme by <a href="https://github.com/orderedlist" target="_blank">orderedlist</a>
|
Redesign by <a href="http://heroicyang.com/" target="_blank">Heroic Yang</a>
</div>
<div class="clearfix"></div></footer>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.8/jquery.min.js"></script>
<script src="/js/scale.fix.js"></script>
<script src="/js/jquery.imagesloaded.min.js"></script>
<script src="/js/gallery.js"></script>
<link rel="stylesheet" href="/fancybox/jquery.fancybox.css" media="screen" type="text/css">
<script src="/fancybox/jquery.fancybox.pack.js"></script>
<script type="text/javascript">
(function($){
$('.fancybox').fancybox();
})(jQuery);
</script>
</body>
</html>