Skip to content
Ider

沉淀我所学习,累积我所见闻,分享我所体验

Primary Navigation Menu
Menu
  • Home
  • About Ider
    • Who Ider?
    • Why Ider?
    • How Ider?
    • Where Ider?
    • What Ider?

Annotation

2015-06-06
06 June
On June 6, 2015
In Data Structures(数据结构), Knowledge Base(心得笔库), Mobile Development(移动开发)

利用Java的注解,维护Android的代码

对于Java这门语言,我的态度应该是讨厌多于喜欢。整个大学我只上过一门Java的选修课算是有了Java的入门知识,之后用得更多的则是C#。在研究生阶段也是以C++和C#为主。直到工作需要做Android开发才拾起Java作为主打开发武器,所以很多Java的知识对我而言可能只是懂一个肤浅的表面。好在身边有很多的大神总是愿意耐心提供帮助,引导我进入Java新的知识领域,再加上网上的一些搜索和补充,让我的知识变得更加全面。

比如WeakReference在一定程度上帮助解决了Activity和Fragment泄露的问题;多线程时要注意的同步问题;内部类调用其外部类的私有方法和变量产生了合成方法(Synthetic Methods)造成的性能影响和Android的dex溢出。

最近又得益大神们的教诲,被反复强调一定要善用Java的注解(annotation)。这让我感觉,当我还在思索要怎么写代码的时候,别人已经在考虑着怎么告诉编译器和其他开发者他们写了什么东西。

不过在坚持使用Annotation数月之后,我也深深体会到了它对写代码带来的好处而停不下来。比如方法上加个@Override就可以大大减少把重载方法名字的或者变量参数写错的几率,同时在浏览文件时一眼就能看出哪些是新增方法,哪些来自父类;在对象变量上放一个@Nullable,IDE就能帮助我们快速指出哪里有可能会出现NullPointerException这个恼人却又简单能解决的问题,不用等到运行时异常被抛出了才去解决;而加上@NonNull就可以随心所意的直接使用变量而无需加if语句了检查null。

还有在Android开发中最常用到的那些指示资源的标示(Resource Id),全部都是整型数,其实有很多的类型如R.id、R.string、R.drawable。如果不小心,就很容易弄错而得到了非所需的结果。特别是R.style和R.styleable两个常常会被IDE的自动补全所迷惑;还有整型的Color值和R.color也很容易出错。现在只要在变量前加上对应类型的Android Support Annotation,就可以大大地规避这些问题出现的几率。

虽然对于有经验的开发者来说这些小问题都会自动避免,再不小心运行时也会发现问题。但不是所有接触和使用这些代码的人都能一样的小心。万一别人的失误落到自己头上修复,也只能无奈抱怨一句:这人怎么这么不小心呢。

简单的加上一些annotation,那么一旦在代码中出现错误的使用,IDE就会高亮显示错误的地方让人一目了然,也能及时修改这些错误,不用等到运行后才去debug:

support_annotation

Read More →

Facebook
Twitter
LinkedIn
RSS
ZhiHu

Recent Posts

  • 三年居家工作感受
  • Pixel Watch智能手表和Pixel 5, 6 Pro 及 7 Pro手机
  • 我拥有过的无线耳机
  • 毕业工作一个月,我差点被开除
  • 我拥有过的移动硬盘
  • ProtoBuf 2.0 method count optimization for android development
  • 面过100场行为面试后

Categories

  • Algorithm Analysis(算法分析)
  • Article Collection(聚宝收藏)
  • Data Structures(数据结构)
  • Design Patterns(设计模式)
  • English Posts(英文写作)
  • Front Interface(界面构想)
  • IT Products(数码产品)
  • Knowledge Base(心得笔库)
  • Language Tips(语言初试)
  • Mathematical Theory(数学理论)
  • Mobile Development(移动开发)
  • Programming Life(程序人生)
  • Reading Notes(阅而后知)
  • Software Engineering(软件工程)
  • Special Tricks(奇技妙招)
  • Tangential Speech(漫话杂谈)

Tags

Aero Android API Bash Binary Search Bitwise Operation Book C/C++ Career Chrome Conference CSS Debug Device DOM Extension Framework Game Gradle Hearthstone HTML Initialization Intellij Interview iOS Java JavaScript jQuery Keyword Language Issues Mac Microsoft Mobile Modifier Objective-C PHP Principle Reference Regular Expression Static String Tools Tutorial UI XML

Blogroll

  • Ahmed's Blog
  • Gert Lombard's Blog
  • Gordon Luk
  • Jack & Allison
  • 开发部落

Archives

Designed using Chromatic. Powered by WordPress.