我的疑问是如何在Android应用程序中实现一个干净简单的代码来维护?我正在尝试应用Uncle bob - clean code
规则但是随着我继续开发,有时必须打破一些规则,我以700行的活动结束(我没有使用片段,700行似乎是一个“做太多事情”的类)所以我想知道是否有人尝试使用正确使用的Android应用程序片段并且可以回答这些问题:
1- does it really impact on Activity lines length (at least less than 300-500 [not strictly this numbers but a "reasonable" Class length] lines)?
2- does code keep clean and easy over the time?, not necessary with Uncle bob rules but considering best practice in OO while coding.
3- does it have a considerable impact in terms of "Performance"?
4- does Fragment help to support in a more simple way a wide fan of Screens?"
5- ignoring developer skills, what "should" be the way to go non-Fragment activities or activities with rich Fragment use?
注意:这不是重复Android - Activity vs FragmentActivity?的尝试,因为这里的主题不是关于标签格式,而是关于android开发的最佳实践。
抱歉我的英语;)。答案 0 :(得分:1)
您正在使用FragmentActivity
将片段的使用混为一谈。
FragmentActivity
是Activity
的子类,旨在与Android支持包中的 backport 片段一起使用。如果使用backport,通常只使用FragmentActivity
。如果您使用的是片段,但android:minSdkVersion
设置为11或更高,则通常可以跳过FragmentActivity
。
考虑到这一点:
它是否真的影响活动行长度(至少少于300行)?
这是不可能的。这相当于询问子类Restaurant
的{{1}}是否比子类Business
的{{1}}更长或更短。这一切都取决于你的代码。
话虽如此,片段的使用肯定会减少活动中的代码行。恕我直言,这不是使用片段的好理由。
代码是否一直保持干净和简单?没有必要使用Uncle bob规则,但在编码时考虑OO的最佳实践。
这是不可能的。与等级Restaurant
的{{1}}相比,它等同于询问子类FoodSupplier
的{{1}}是否“干净且简单”。这一切都取决于你的代码。
它在“绩效”方面有相当大的影响吗?
通常不会。
Fragment是否有助于以更简单的方式支持Screens的广泛粉丝?“
如果通过“广泛的屏幕粉丝”,你的意思是“各种各样的屏幕尺寸”,那么,片段可以帮助你。事实上,这是使用片段的首要原因,恕我直言。然而,单独的片段并不能对屏幕尺寸有神奇的帮助,只不过在方法名称中使用大写字母会对屏幕尺寸产生神奇的帮助。
忽略了开发人员的技能,“应该”是什么样的去FragmentActivity或Activity?
如前所述,如果使用片段的后端,通常只使用Restaurant
。如果您使用的是片段,但Business
设置为11或更高,则通常可以跳过Restaurant
。
如果您的问题确实是“我应该在我的应用中使用片段吗?”,答案是“可能,但这取决于应用”。
答案 1 :(得分:0)
是的,碎片是要走的路。它们以合理的方式帮助您传播代码,因此您没有700行活动,它们使您的代码更容易,因为每个片段通常都有自己的类,并且它们可以回答您的第4个问题,拥有“广泛的屏幕粉丝”。
我建议您使用此视频来帮助您入门。对于任何初学者,这个视频是如何使用片段的一个很好的解释(我知道,因为我很难在我看这个视频之前弄清楚如何使用它们)。它被Andrew Ruffolo称为“使用片段编程Android”:
http://www.youtube.com/watch?v=KyXvq_kwfzg
此视频演示了碎片的力量。您仍然需要某种主要活动,但这个主要活动有点像片段的容器,应用程序的大多数功能都由片段及其相应的类处理。
我从未使用过活动,因为我在将片段添加到android后启动了应用程序开发,但似乎片段有助于按照方法和内部类帮助分解类的方式分解应用程序,并且就像课程有助于分解项目或计划。我不确定这是否可行,或者只是在添加片段之前仅使用活动。