{
  "version": "https://jsonfeed.org/version/1.1",
  "title": "chem-bla-ics",
  "description": "Chemblaics (pronounced chem-bla-ics) is the science that uses open science and computers to solve problems in chemistry, biochemistry and related fields.",
  "home_page_url": "https://chem-bla-ics.linkedchemistry.info/",
  "feed_url": "https://chem-bla-ics.linkedchemistry.info/2010/03/07/cleaner-cdk-code-1-list-and-for-each.json",
  "icon": "https://chem-bla-ics.linkedchemistry.info/assets/images/chem-bla-ics_logo.png",
  "language": "en",
  "authors": [
    {
      "name": "Egon Willighagen",
      "url": "https://orcid.org/0000-0001-7542-0286",
      "_orcid": "0000-0001-7542-0286"
    }
  ],
  "items": [

    {
      "id": "https://doi.org/10.59350/jx0j3-s9893",
      "url": "https://chem-bla-ics.linkedchemistry.info/2010/03/07/cleaner-cdk-code-1-list-and-for-each.html",
      "title": "Cleaner CDK Code #1: List&amp;lt;IAtom&gt; and the for-each loop",
      "content_html": "<p>In a desperate attempt to force me to write on my <a href=\"http://cdk.sf.net/\">CDK</a> code snippet book, I’m going to write\nsome code tips to create clear code. Hopefully, this is useful for people writing patches and reviewers alike, too.</p>\n\n<h2 id=\"use-list-instead-of-the-untyped-list\">Use List instead of the untyped List</h2>\n\n<p>Quite some time ago, the Java language introduced typed lists. These lists can contain only objects of a particular\ntype, which is a very common use case. Indeed, the CDK has quite a few lists that are strongly typed. Typing the\nlist prevents you from accidentally adding something of the wrong type, but also reduced the amount of casting, so\nthat your code becomes cleaner.</p>\n\n<p>Instead of:</p>\n\n<div class=\"language-java highlighter-rouge\"><div class=\"highlight\"><pre class=\"highlight\"><code><span class=\"nc\">List</span> <span class=\"n\">atoms</span> <span class=\"o\">=</span> <span class=\"n\">atomContainer</span><span class=\"o\">.</span><span class=\"na\">atoms</span><span class=\"o\">();</span>\n<span class=\"k\">for</span> <span class=\"o\">(</span><span class=\"kt\">int</span> <span class=\"n\">i</span><span class=\"o\">=</span><span class=\"mi\">0</span><span class=\"o\">;</span> <span class=\"n\">i</span><span class=\"o\">&lt;</span><span class=\"n\">atoms</span><span class=\"o\">.</span><span class=\"na\">size</span><span class=\"o\">();</span> <span class=\"n\">i</span><span class=\"o\">++)</span> <span class=\"o\">{</span>\n  <span class=\"nc\">IAtom</span> <span class=\"n\">atom</span> <span class=\"o\">=</span> <span class=\"o\">(</span><span class=\"nc\">IAtom</span><span class=\"o\">)</span><span class=\"n\">atoms</span><span class=\"o\">.</span><span class=\"na\">get</span><span class=\"o\">(</span><span class=\"n\">i</span><span class=\"o\">);</span>\n  <span class=\"c1\">// .. do something</span>\n<span class=\"o\">}</span>\n</code></pre></div></div>\n\n<p>you can do:</p>\n\n<div class=\"language-java highlighter-rouge\"><div class=\"highlight\"><pre class=\"highlight\"><code><span class=\"nc\">List</span><span class=\"o\">&lt;</span><span class=\"nc\">IAtom</span><span class=\"o\">&gt;</span> <span class=\"n\">atoms</span> <span class=\"o\">=</span> <span class=\"n\">atomContainer</span><span class=\"o\">.</span><span class=\"na\">atoms</span><span class=\"o\">();</span>\n<span class=\"k\">for</span> <span class=\"o\">(</span><span class=\"kt\">int</span> <span class=\"n\">i</span><span class=\"o\">=</span><span class=\"mi\">0</span><span class=\"o\">;</span> <span class=\"n\">i</span><span class=\"o\">&lt;</span><span class=\"n\">atoms</span><span class=\"o\">.</span><span class=\"na\">size</span><span class=\"o\">();</span> <span class=\"n\">i</span><span class=\"o\">++)</span> <span class=\"o\">{</span>\n  <span class=\"nc\">IAtom</span> <span class=\"n\">atom</span> <span class=\"o\">=</span> <span class=\"n\">atoms</span><span class=\"o\">.</span><span class=\"na\">get</span><span class=\"o\">(</span><span class=\"n\">i</span><span class=\"o\">);</span>\n  <span class=\"c1\">// .. do something</span>\n<span class=\"o\">}</span>\n</code></pre></div></div>\n\n<h2 id=\"if-you-do-not-need-the-index-use-a-for-each-loop\">If you do not need the index, use a for-each loop</h2>\n\n<p>When iterating over atoms in a list, you sometimes need to know the index, for example, to compare the IAtom with\nthat at the same position in another list. However, when this is not needed, you can use the Java\n<a href=\"http://java.sun.com/j2se/1.5.0/docs/guide/language/foreach.html\">for-each loop</a> instead. This will further\nsimplify the above code to:</p>\n\n<div class=\"language-java highlighter-rouge\"><div class=\"highlight\"><pre class=\"highlight\"><code><span class=\"k\">for</span> <span class=\"o\">(</span><span class=\"nc\">IAtom</span> <span class=\"n\">atom</span> <span class=\"o\">:</span> <span class=\"n\">atomContainer</span><span class=\"o\">.</span><span class=\"na\">atoms</span><span class=\"o\">())</span> <span class=\"o\">{</span>\n  <span class=\"c1\">// .. do something</span>\n<span class=\"o\">}</span>\n</code></pre></div></div>",
      "summary": "In a desperate attempt to force me to write on my CDK code snippet book, I’m going to write some code tips to create clear code. Hopefully, this is useful for people writing patches and reviewers alike, too.",
      
      "date_published": "2010-03-07T00:00:00+00:00",
      "date_modified": "2010-03-07T00:00:00+00:00",
      "tags": ["cdk","java"],
      
      
      
      
      
      
        "authors": [ { "name": "Egon Willighagen", "url": "https://orcid.org/0000-0001-7542-0286" } ]
      
    }

  ]
}
