<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="zh-Hans-CN">
	<id>https://wiki.riguz.com/index.php?action=history&amp;feed=atom&amp;title=Blog%3AWhy_I_don%27t_use_lombok</id>
	<title>Blog:Why I don&#039;t use lombok - 版本历史</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.riguz.com/index.php?action=history&amp;feed=atom&amp;title=Blog%3AWhy_I_don%27t_use_lombok"/>
	<link rel="alternate" type="text/html" href="https://wiki.riguz.com/index.php?title=Blog:Why_I_don%27t_use_lombok&amp;action=history"/>
	<updated>2026-06-02T19:44:26Z</updated>
	<subtitle>本wiki上该页面的版本历史</subtitle>
	<generator>MediaWiki 1.42.3</generator>
	<entry>
		<id>https://wiki.riguz.com/index.php?title=Blog:Why_I_don%27t_use_lombok&amp;diff=2574&amp;oldid=prev</id>
		<title>imported&gt;Riguz：​很多人，如同我的同事，似乎觉得lombok这玩意就像神一样的存在，“极大”的方便了项目的开发。我个人是不喜欢这玩意的，很简单的理由：

* 生成getter/setter不是多么困难的事情，IDE很简单就能帮你搞定
* 我不喜欢为自己的IDE装一大堆插件，还要为项目手动开启一下Annotation Processing
* 代码不可见，意味着生成的getters/setter方法，以及@AllArgConstructor生成的方法无法维护</title>
		<link rel="alternate" type="text/html" href="https://wiki.riguz.com/index.php?title=Blog:Why_I_don%27t_use_lombok&amp;diff=2574&amp;oldid=prev"/>
		<updated>2018-01-10T00:00:00Z</updated>

		<summary type="html">&lt;p&gt;很多人，如同我的同事，似乎觉得lombok这玩意就像神一样的存在，“极大”的方便了项目的开发。我个人是不喜欢这玩意的，很简单的理由：  * 生成getter/setter不是多么困难的事情，IDE很简单就能帮你搞定 * 我不喜欢为自己的IDE装一大堆插件，还要为项目手动开启一下Annotation Processing * 代码不可见，意味着生成的getters/setter方法，以及@AllArgConstructor生成的方法无法维护&lt;/p&gt;
&lt;p&gt;&lt;b&gt;新页面&lt;/b&gt;&lt;/p&gt;&lt;div&gt;很多人，如同我的同事，似乎觉得lombok这玩意就像神一样的存在，“极大”的方便了项目的开发。我个人是不喜欢这玩意的，很简单的理由：&lt;br /&gt;
&lt;br /&gt;
* 生成getter/setter不是多么困难的事情，IDE很简单就能帮你搞定&lt;br /&gt;
* 我不喜欢为自己的IDE装一大堆插件，还要为项目手动开启一下Annotation Processing&lt;br /&gt;
* 代码不可见，意味着生成的getters/setter方法，以及@AllArgConstructor生成的方法无法维护&lt;br /&gt;
当我把这些想法告诉同事的时候，同事们都觉得我脑子有问题，理由不充分，”lombok只是一个工具，只是没有找到使用工具的最佳实践“。实际上对于技术人员来说，想说服别人是很困难的事情，然而我们为什么要试图说服别人呢？没有多大的意义。相比于工具，有一些更重要的东西就是：经验和原则。&lt;br /&gt;
&lt;br /&gt;
就我的经验，能简单的事情就不要复杂化，越是复杂越难以维护。当然也有人和我是相同的观点，看了一些有意思的关于为什么不用lombok的讨论，贴出来看看：&lt;br /&gt;
&lt;br /&gt;
&amp;gt; OK, let me put it one more time: this has caused me too many bugs. Let me tell&lt;br /&gt;
&amp;gt; you my past experiences with Lombok, as this is the root of the issue.&lt;br /&gt;
&amp;gt; &lt;br /&gt;
&amp;gt; On one project, a new version of the Lombok plugin caused the IDE to&lt;br /&gt;
&amp;gt; crash (I think this was Intellij). So nobody could work anymore. On&lt;br /&gt;
&amp;gt; another project, Lombok made the CI server crash (and would have&lt;br /&gt;
&amp;gt; probably caused the production server to crash), as it triggered a bug&lt;br /&gt;
&amp;gt; in the JVM On a third project, we achieved 30% performance increase by&lt;br /&gt;
&amp;gt; recoding the equals/hashcode from Lombok&lt;br /&gt;
&amp;gt; -&amp;gt; In those 3 projects, some developer gained 5 minutes, and I spent hours recoding everything. So yes, a bad experience.&lt;br /&gt;
&amp;gt; &lt;br /&gt;
&amp;gt; Then, for JHipster, the story is also that we can&amp;#039;t ask people to&lt;br /&gt;
&amp;gt; install a plugin on their IDE:&lt;br /&gt;
&amp;gt; &lt;br /&gt;
&amp;gt; 1st goal is to have a smooth experience: you generate the app and it&lt;br /&gt;
&amp;gt; works in your IDE, by default 2nd goal is that you can use whatever&lt;br /&gt;
&amp;gt; IDE you want. And some people have very exotic things, for example I&lt;br /&gt;
&amp;gt; just tried https://codenvy.com/ -&amp;gt; no plugin for this one, of course&lt;br /&gt;
&amp;gt; &lt;br /&gt;
&amp;gt; Oh, and I just got 2 more:&lt;br /&gt;
&amp;gt; &lt;br /&gt;
&amp;gt; Lombok crashing with MapStruct Lombok making Jacoco fails, which meant&lt;br /&gt;
&amp;gt; the project didn&amp;#039;t pass the Sonar quality gate&lt;br /&gt;
&lt;br /&gt;
参考阅读：&lt;br /&gt;
&lt;br /&gt;
* https://github.com/jhipster/generator-jhipster/issues/398&lt;br /&gt;
* https://gist.github.com/ufuk/0ccb87185c22475c64d46801fa160777&lt;br /&gt;
* https://stackoverflow.com/questions/3852091/is-it-safe-to-use-project-lombok&lt;/div&gt;</summary>
		<author><name>imported&gt;Riguz</name></author>
	</entry>
</feed>