Android 重命名变量以使XML ID更干净
我一直想让代码更干净,但我不会放弃它。我是说 要命名XML中视图的ID,我使用匈牙利符号,如下所示:Android 重命名变量以使XML ID更干净,android,xml,kotlin,rename,Android,Xml,Kotlin,Rename,我一直想让代码更干净,但我不会放弃它。我是说 要命名XML中视图的ID,我使用匈牙利符号,如下所示: @BindView (R.id.tvExampleSectionEmptyBig) TextView tvEmptyBig; @BindView (R.id.tvExampleSectionEmptySmall) TextView tvEmptySmall; 例如:tvExampleSectionEmptyBig,tvexamplesectionemptyball 以前,使用黄油刀,我没有得
@BindView (R.id.tvExampleSectionEmptyBig) TextView tvEmptyBig;
@BindView (R.id.tvExampleSectionEmptySmall) TextView tvEmptySmall;
例如:tvExampleSectionEmptyBig
,tvexamplesectionemptyball
以前,使用黄油刀
,我没有得到太多的编码,因为要进行绑定,我做了如下操作:
@BindView (R.id.tvExampleSectionEmptyBig) TextView tvEmptyBig;
@BindView (R.id.tvExampleSectionEmptySmall) TextView tvEmptySmall;
代码更清晰、更可重用,因为匈牙利符号用于避免在不同活动、片段等中使用相同名称的ID之间的冲突。它在实践中并不比XML中更常见
发生了什么事?
Kotlin有synthetic
,这使您的生活更轻松,因为通过放置视图的id,可以直接完成绑定,但是使用如此长的id,代码非常脏。。。此外,我在名为ExampleSectionActivity
的活动中使用的所有视图都包含在其变量名ExampleSection
中,这是有意义的
我想要什么?
当然有更好的解决方案,但最初,我觉得是通过删除给定的字符串来实现重命名变量的方法。由于我在ID的所有名称中都遵循一个约定,因此它在内部是这样的:
val tvEmptyBig = tvExampleSectionEmptyBig
val tvEmptySmall = tvExampleSectionEmptySmall
当然,我想用一种自动化的方式
另一方面,我已经尝试在不使用的情况下命名ID,并小心导入,但目前,synthetic
在这方面偶尔会失败,我必须不断地重建。特别是如果我打开另一个Android Studio实例,我通常会经常这样做,以咨询我的其他项目
有什么想法吗?:-) 在我看来,你能做的最简单、最干净的事情是:
private val myTextView: TextView
get() = f_layoyt_text_view
通过这种方式,你不必使用可笑的ButterKnife,至少在2018年,甚至不必在几个星期内使用更不方便的findViewById
,我已经想当然地认为,随着Android Studio的最新稳定更新,在不同的活动或片段中重复ID的名称是没有问题的。因此,不再需要放置长变量名。只需稍微注意一下进口,一切都像一个魅力,更具可读性和可重用性。:-) 但就目前而言,synthetic在这方面偶尔会失败,我不得不不断地进行重建——这是一个bug,将在AS的下一个版本中修复。对于您的问题,如果您需要xml中的长名称“TveExampleSectionEmptySall”,为什么不在代码中也需要它呢?还有,为什么您觉得长变量名会使代码变脏?表达性强于使用短名称,而只是使用短名称。我也需要在代码中使用它。为了更具可读性,我想重命名那些long变量名。我在帖子中试图解释。例如:在名为ExampleSectionActivity
的活动中,我不需要名为tvExampleSectionEmptyBig
的变量中的字符串ExampleSection
。最好使用名称tvEmptyBig
。那么为什么在xml中称为tvExampleSectionEmptyBig呢?为什么不使用tvEmptyBig2原因:如果我在其他XML中使用相同的名称调用了其他视图,那么我们可以使用conficts。另一个,如果我重构一个XML中变量的名称,我将直接更改另一个XML中变量的名称。@GabrielMoreno这取决于你的意思是什么?我想应用于我所有的活动和片段。我想要一种方法来循环所有视图并直接获得重命名的变量。