Android Notepad练习1教程和Menu.FIRST

Adr*_*lli 6 android

抱歉,如果这最终成为一个愚蠢的问题,但我只是想知道为什么这是在Notepad练习1教程的第9步(http://developer.android.com/resources/tutorials/notepad/notepad-ex1.html)完成的)...

public static final int INSERT_ID = Menu.FIRST;
Run Code Online (Sandbox Code Playgroud)

...然后INSERT_ID在任何地方使用,而不是Menu.FIRST直接在所有地方使用?

我以为我不想创建任何新变量,如果我不需要,特别是当它们已经是静态最终时.

创建起来很昂贵INSERT_ID吗?

Mar*_*ris 3

因为如果您在任何地方都使用 Menu.First,则决定在菜单中移动该选项,以便它不再是您需要更新所有引用的第一个项目。这样,您只需在一处更新它,更明智的命名 INSERT_ID 将反映您在其他地方所做的更改。

至于创建新变量对性能的影响:是的,创建变量会占用(微不足道的)CPU 时间,是的,存储变量会占用(微不足道的)内存,但永远不应该把性能放在第一位代码可读性,直到您确定遇到瓶颈为止 - 您将处于一个非常受限的环境中,这几乎是一个问题。

最后,许多编译器无论如何都会内联对 INSERT_ID 的引用。这意味着对 INSERT_ID 的所有引用都将在编译时替换为 Menu.First 中的值,并且该变量实际上永远不会被创建。我对 Android 编译器了解不够,无法确定是哪种方式,但如果它不这样做,我会感到惊讶。