{"id":693,"date":"2009-09-09T22:19:06","date_gmt":"2009-09-10T03:19:06","guid":{"rendered":"http:\/\/mikeconley.ca\/blog\/?p=693"},"modified":"2023-12-20T16:25:19","modified_gmt":"2023-12-20T21:25:19","slug":"code-reviews-by-arjen-markus-2009","status":"publish","type":"post","link":"https:\/\/mikeconley.ca\/blog\/2009\/09\/09\/code-reviews-by-arjen-markus-2009\/","title":{"rendered":"&#8220;Code reviews&#8221; by Arjen Markus (2009)"},"content":{"rendered":"<h2><a href=\"http:\/\/portal.acm.org\/ft_gateway.cfm?id=1570524&amp;type=pdf\">Code Reviews<\/a><\/h2>\n<p>by Arjen Markus<br \/>\nDeltares, The Netherlands<br \/>\nACM <em>Fortran Forum<\/em>, August 2009, <strong>28<\/strong>, 2<\/p>\n<p>This is one of the first papers I found.\u00a0 Consider it my &#8220;warm up&#8221; paper.<\/p>\n<p>According to the header, Arjen Markus works for &#8220;Deltares&#8221;, and after a quick Google-hunt, I found out that <a href=\"http:\/\/www.wldelft.nl\/\">Deltares<\/a> is a &#8220;new independent Dutch institute for national and international delta issues&#8221;.<\/p>\n<p>Upon closer inspection, it seems that Markus&#8217; paper is concerned with what reviewers should be looking for during code reviews:<\/p>\n<blockquote><p>&#8220;What should you be looking for in the code?\u00a0 It is not enough to check that the code adheres to the programming standard of the project it belongs to.\u00a0 Such a standard may not exist, be incomplete or be focussed on layout, not on questionable constructs that are a liability.\u00a0 With this article I would like to fill in this practical gap, at least partly.&#8221; (Page 4)<\/p><\/blockquote>\n<p>This isn&#8217;t exactly <a href=\"http:\/\/mikeconley.ca\/blog\/2009\/09\/09\/code-reviews\/\">what I set out to look for<\/a>, but I thought I&#8217;d give it a once-over anyways.<\/p>\n<p>Markus&#8217; paper is not what I would call a rigorous scientific publication.\u00a0 There is no empirical data, no hypothesis, none of that good ol&#8217; scientific method stuff.\u00a0 Instead, it&#8217;s more akin to a &#8220;do&#8221; and &#8220;do not&#8221; set of advice and examples that one would find in a software engineering textbook.<\/p>\n<p>A FORTRAN software engineering textbook, to be more precise.\u00a0 Markus&#8217; examples are all in FORTRAN.<\/p>\n<p>Broken down simply, Markus has four principles, or bits of advice:<\/p>\n<h2>&#8220;The importance of being explicit&#8221;<\/h2>\n<p>Essentially, this means to be clear with what you&#8217;re doing in the code.\u00a0 It&#8217;s common sense stuff:\u00a0 don&#8217;t be overly clever, be readable, don&#8217;t use magic numbers or strings, document your code, group related routines into the same modules, use information hiding in your modules when appropriate, clear and precise error messages, etc.<\/p>\n<h2>&#8220;Don&#8217;t go your own way&#8221;<\/h2>\n<p>Markus advises developers to stick to an agreed coding standard \/ style guide.\u00a0 Don&#8217;t reinvent the wheel &#8211; instead, use typical solutions to problems that arise.\u00a0 &#8220;Don&#8217;t go against the grain&#8221; (Page 7).<\/p>\n<h2>&#8220;Be careful out there&#8221;<\/h2>\n<p>Markus advises developers to watch out for documented language quirks, common language pitfalls, etc.\u00a0 This is followed by numerous examples in FORTRAN.<\/p>\n<h2>&#8220;Curiouser and curiouser&#8221;<\/h2>\n<p>Markus asks to keep an eye out for &#8220;a lack of attention to design, to readability and other aspects that are important for the program in the long run&#8221; (Page 11).\u00a0\u00a0\u00a0 He also repeats a few things from &#8220;the importance of being explicit&#8221; &#8211; mainly, to make sure that the code is organized in a way that makes sense to the developers.<\/p>\n<p>I don&#8217;t know.\u00a0 I don&#8217;t think I&#8217;m the target audience here.\u00a0 In hindsight, I found the information in this paper to be very general, and rather self-evident.\u00a0 The only thing I seemed to learn was a bit about FORTRAN quirks.<\/p>\n<p>I think I need to be less laissez faire in my paper selections.\u00a0 This one didn&#8217;t help me find <a href=\"http:\/\/mikeconley.ca\/blog\/2009\/09\/09\/code-reviews\/\">what I was looking for<\/a>, and I should have seen that from the abstract.\u00a0 Bah.<\/p>\n<p>EDIT:\u00a0 Why did I waste my time searching ACM when <a href=\"http:\/\/smartbear.com\/codecollab-white-paper.php\">more interesting information<\/a> was waiting <a href=\"http:\/\/smartbear.com\/white-paper.php?content=docs\/articles\/Case-For-Code-Review.html\">right under my nose<\/a>?\u00a0 I think I have an idea what to review next.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Code Reviews by Arjen Markus Deltares, The Netherlands ACM Fortran Forum, August 2009, 28, 2 This is one of the first papers I found.\u00a0 Consider it my &#8220;warm up&#8221; paper. According to the header, Arjen Markus works for &#8220;Deltares&#8221;, and after a quick Google-hunt, I found out that Deltares is a &#8220;new independent Dutch institute [&hellip;]<\/p>\n","protected":false},"author":4,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2},"jetpack_post_was_ever_published":false},"categories":[454,1],"tags":[456,1218,457,455],"class_list":["post-693","post","type-post","status-publish","format-standard","hentry","category-code-reviews","category-uncategorized","tag-arjen-markus","tag-code-reviews","tag-deltares","tag-fortran"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_shortlink":"https:\/\/wp.me\/prmTy-bb","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/mikeconley.ca\/blog\/wp-json\/wp\/v2\/posts\/693","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mikeconley.ca\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/mikeconley.ca\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/mikeconley.ca\/blog\/wp-json\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/mikeconley.ca\/blog\/wp-json\/wp\/v2\/comments?post=693"}],"version-history":[{"count":10,"href":"https:\/\/mikeconley.ca\/blog\/wp-json\/wp\/v2\/posts\/693\/revisions"}],"predecessor-version":[{"id":3228,"href":"https:\/\/mikeconley.ca\/blog\/wp-json\/wp\/v2\/posts\/693\/revisions\/3228"}],"wp:attachment":[{"href":"https:\/\/mikeconley.ca\/blog\/wp-json\/wp\/v2\/media?parent=693"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mikeconley.ca\/blog\/wp-json\/wp\/v2\/categories?post=693"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mikeconley.ca\/blog\/wp-json\/wp\/v2\/tags?post=693"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}