<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <!-- The above 3 meta tags *must* come first in the head; any other head content must come *after* these tags -->
    <title>Apache Flink: Apache Flink Code Style and Quality Guide  — Common Rules</title>
    <link rel="shortcut icon" href="/favicon.ico" type="image/x-icon">
    <link rel="icon" href="/favicon.ico" type="image/x-icon">

    <!-- Bootstrap -->
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/css/bootstrap.min.css">
    <link rel="stylesheet" href="/css/flink.css">
    <link rel="stylesheet" href="/css/syntax.css">

    <!-- Blog RSS feed -->
    <link href="/blog/feed.xml" rel="alternate" type="application/rss+xml" title="Apache Flink Blog: RSS feed" />

    <!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->
    <!-- We need to load Jquery in the header for custom google analytics event tracking-->
    <script src="/js/jquery.min.js"></script>

    <!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries -->
    <!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
    <!--[if lt IE 9]>
      <script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script>
      <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
    <![endif]-->
  </head>
  <body>  
    

    <!-- Main content. -->
    <div class="container">
    <div class="row">

      
     <div id="sidebar" class="col-sm-3">
        

<!-- Top navbar. -->
    <nav class="navbar navbar-default">
        <!-- The logo. -->
        <div class="navbar-header">
          <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1">
            <span class="icon-bar"></span>
            <span class="icon-bar"></span>
            <span class="icon-bar"></span>
          </button>
          <div class="navbar-logo">
            <a href="/zh/">
              <img alt="Apache Flink" src="/img/flink-header-logo.svg" width="147px" height="73px">
            </a>
          </div>
        </div><!-- /.navbar-header -->

        <!-- The navigation links. -->
        <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
          <ul class="nav navbar-nav navbar-main">

            <!-- First menu section explains visitors what Flink is -->

            <!-- What is Stream Processing? -->
            <!--
            <li><a href="/zh/streamprocessing1.html">What is Stream Processing?</a></li>
            -->

            <!-- What is Flink? -->
            <li><a href="/zh/flink-architecture.html">Apache Flink 是什么?</a></li>

            

            <!-- What is Stateful Functions? -->

            <li><a href="/zh/stateful-functions.html">What is Stateful Functions?</a></li>

            <!-- Use cases -->
            <li><a href="/zh/usecases.html">应用场景</a></li>

            <!-- Powered by -->
            <li><a href="/zh/poweredby.html">Flink 用户</a></li>


            &nbsp;
            <!-- Second menu section aims to support Flink users -->

            <!-- Downloads -->
            <li><a href="/zh/downloads.html">下载</a></li>

            <!-- Getting Started -->
            <li class="dropdown">
              <a class="dropdown-toggle" data-toggle="dropdown" href="#">教程<span class="caret"></span></a>
              <ul class="dropdown-menu">
                <li><a href="https://ci.apache.org/projects/flink/flink-docs-release-1.11/zh/getting-started/index.html" target="_blank">With Flink <small><span class="glyphicon glyphicon-new-window"></span></small></a></li>
                <li><a href="https://ci.apache.org/projects/flink/flink-statefun-docs-release-2.1/getting-started/project-setup.html" target="_blank">With Flink Stateful Functions <small><span class="glyphicon glyphicon-new-window"></span></small></a></li>
                <li><a href="/zh/training.html">Training Course</a></li>
              </ul>
            </li>

            <!-- Documentation -->
            <li class="dropdown">
              <a class="dropdown-toggle" data-toggle="dropdown" href="#">文档<span class="caret"></span></a>
              <ul class="dropdown-menu">
                <li><a href="https://ci.apache.org/projects/flink/flink-docs-release-1.11" target="_blank">Flink 1.11 (Latest stable release) <small><span class="glyphicon glyphicon-new-window"></span></small></a></li>
                <li><a href="https://ci.apache.org/projects/flink/flink-docs-master" target="_blank">Flink Master (Latest Snapshot) <small><span class="glyphicon glyphicon-new-window"></span></small></a></li>
                <li><a href="https://ci.apache.org/projects/flink/flink-statefun-docs-release-2.1" target="_blank">Flink Stateful Functions 2.1 (Latest stable release) <small><span class="glyphicon glyphicon-new-window"></span></small></a></li>
                <li><a href="https://ci.apache.org/projects/flink/flink-statefun-docs-master" target="_blank">Flink Stateful Functions Master (Latest Snapshot) <small><span class="glyphicon glyphicon-new-window"></span></small></a></li>
              </ul>
            </li>

            <!-- getting help -->
            <li><a href="/zh/gettinghelp.html">获取帮助</a></li>

            <!-- Blog -->
            <li><a href="/blog/"><b>Flink 博客</b></a></li>


            <!-- Flink-packages -->
            <li>
              <a href="https://flink-packages.org" target="_blank">flink-packages.org <small><span class="glyphicon glyphicon-new-window"></span></small></a>
            </li>
            &nbsp;

            <!-- Third menu section aim to support community and contributors -->

            <!-- Community -->
            <li><a href="/zh/community.html">社区 &amp; 项目信息</a></li>

            <!-- Roadmap -->
            <li><a href="/zh/roadmap.html">开发计划</a></li>

            <!-- Contribute -->
            <li><a href="/zh/contributing/how-to-contribute.html">如何参与贡献</a></li>
            
            <ul class="nav navbar-nav navbar-subnav">
              <li >
                  <a href="/zh/contributing/contribute-code.html">贡献代码</a>
              </li>
              <li >
                  <a href="/zh/contributing/reviewing-prs.html">审核 Pull Request</a>
              </li>
              <li >
                  <a href="/zh/contributing/code-style-and-quality-preamble.html">代码样式与质量指南</a>
              </li>
              <li >
                  <a href="/zh/contributing/contribute-documentation.html">贡献文档</a>
              </li>
              <li >
                  <a href="/zh/contributing/docs-style.html">Documentation Style Guide</a>
              </li>
              <li >
                  <a href="/zh/contributing/improve-website.html">贡献网站</a>
              </li>
            </ul>
            

            <!-- GitHub -->
            <li>
              <a href="https://github.com/apache/flink" target="_blank">Flink on GitHub <small><span class="glyphicon glyphicon-new-window"></span></small></a>
            </li>

            &nbsp;

            <!-- Language Switcher -->
            <li>
              
                <a href="/contributing/code-style-and-quality-common.html">English</a>
              
            </li>

          </ul>

          <ul class="nav navbar-nav navbar-bottom">
          <hr />

            <!-- Twitter -->
            <li><a href="https://twitter.com/apacheflink" target="_blank">@ApacheFlink <small><span class="glyphicon glyphicon-new-window"></span></small></a></li>

            <!-- Visualizer -->
            <li class=" hidden-md hidden-sm"><a href="/visualizer/" target="_blank">Plan Visualizer <small><span class="glyphicon glyphicon-new-window"></span></small></a></li>

          <hr />

            <li><a href="https://apache.org" target="_blank">Apache Software Foundation <small><span class="glyphicon glyphicon-new-window"></span></small></a></li>

            <li>
              <style>
                .smalllinks:link {
                  display: inline-block !important; background: none; padding-top: 0px; padding-bottom: 0px; padding-right: 0px; min-width: 75px;
                }
              </style>

              <a class="smalllinks" href="https://www.apache.org/licenses/" target="_blank">License</a> <small><span class="glyphicon glyphicon-new-window"></span></small>

              <a class="smalllinks" href="https://www.apache.org/security/" target="_blank">Security</a> <small><span class="glyphicon glyphicon-new-window"></span></small>

              <a class="smalllinks" href="https://www.apache.org/foundation/sponsorship.html" target="_blank">Donate</a> <small><span class="glyphicon glyphicon-new-window"></span></small>

              <a class="smalllinks" href="https://www.apache.org/foundation/thanks.html" target="_blank">Thanks</a> <small><span class="glyphicon glyphicon-new-window"></span></small>
            </li>

          </ul>
        </div><!-- /.navbar-collapse -->
    </nav>

      </div>
      <div class="col-sm-9">
      <div class="row-fluid">
  <div class="col-sm-12">
    <h1>Apache Flink Code Style and Quality Guide  — Common Rules</h1>

	
<ul class="list-group" style="padding-top: 30px; font-weight: bold;">
	<li class="list-group-item">
		<a href="/zh/contributing/code-style-and-quality-preamble.html">
			序言
		</a>
	</li>
	<li class="list-group-item">
		<a href="/zh/contributing/code-style-and-quality-pull-requests.html">
			Pull Requests &amp; Changes
		</a>
	</li>
	<li class="list-group-item">
		<a href="/zh/contributing/code-style-and-quality-common.html">
			常用编码指南
		</a> 
	</li>
	<li class="list-group-item">
		<a href="/zh/contributing/code-style-and-quality-java.html">
			Java 语言指南
		</a> 
	</li>
	<li class="list-group-item">
		<a href="/zh/contributing/code-style-and-quality-scala.html">
			Scala 语言指南
		</a> 
	</li>
	<li class="list-group-item">
		<a href="/zh/contributing/code-style-and-quality-components.html">
			组件指南
		</a> 
	</li>
	<li class="list-group-item">
		<a href="/zh/contributing/code-style-and-quality-formatting.html">
			格式指南
		</a> 
	</li>
</ul>

<hr />

<div class="page-toc">
<ul id="markdown-toc">
  <li><a href="#tools" id="markdown-toc-tools">1. Tools</a>    <ul>
      <li><a href="#warnings" id="markdown-toc-warnings">Warnings</a></li>
    </ul>
  </li>
  <li><a href="#comments-and-code-readability" id="markdown-toc-comments-and-code-readability">2. Comments And Code Readability</a>    <ul>
      <li><a href="#comments" id="markdown-toc-comments">Comments</a></li>
      <li><a href="#branches-and-nesting" id="markdown-toc-branches-and-nesting">Branches and Nesting</a></li>
    </ul>
  </li>
  <li><a href="#design-and-structure" id="markdown-toc-design-and-structure">3. Design and Structure</a>    <ul>
      <li><a href="#immutability-and-eager-initialization" id="markdown-toc-immutability-and-eager-initialization">Immutability and Eager Initialization</a></li>
      <li><a href="#nullability-of-the-mutable-parts" id="markdown-toc-nullability-of-the-mutable-parts">Nullability of the Mutable Parts</a></li>
      <li><a href="#avoid-code-duplication" id="markdown-toc-avoid-code-duplication">Avoid Code Duplication</a></li>
      <li><a href="#design-for-testability" id="markdown-toc-design-for-testability">Design for Testability</a></li>
      <li><a href="#performance-awareness" id="markdown-toc-performance-awareness">Performance Awareness</a></li>
    </ul>
  </li>
  <li><a href="#concurrency-and-threading" id="markdown-toc-concurrency-and-threading">4. Concurrency and Threading</a></li>
  <li><a href="#dependencies-and-modules" id="markdown-toc-dependencies-and-modules">5. Dependencies and Modules</a></li>
</ul>

</div>

<h2 id="tools">1. Tools</h2>

<p>We recommend to follow the <a href="https://ci.apache.org/projects/flink/flink-docs-master/flinkDev/ide_setup.html#checkstyle-for-java">IDE Setup Guide</a> to get IDE tooling configured.</p>

<!---
### Use inspections in IntelliJ

* Import the inspections settings into the IDE (see IDE setup guide)
    * TODO: Need to agree on a profile and export it (like checkstyle)
* Write the code such that inspection warnings are addressed
    * There are few exceptions where an inspection warning is not meaningful. In that case, suppress the inspection warning.
-->

<h3 id="warnings">Warnings</h3>

<ul>
  <li>We strive for zero warnings</li>
  <li>Even though there are many warnings in existing code, new changes should not add any additional compiler warnings</li>
  <li>If it is not possible to address the warning in a sane way (in some cases when working with generics) add an annotation to suppress the warning</li>
  <li>When deprecating methods, check that this does not introduce additional warnings</li>
</ul>

<h2 id="comments-and-code-readability">2. Comments And Code Readability</h2>

<h3 id="comments">Comments</h3>

<p><strong>Golden rule: Comment as much as necessary to support code understanding, but don’t add redundant information.</strong></p>

<p>Think about</p>

<ul>
  <li><span style="text-decoration:underline;">What</span> is the code doing?</li>
  <li><span style="text-decoration:underline;">How</span> does the code do this?</li>
  <li><span style="text-decoration:underline;">Why</span> is the code like that?</li>
</ul>

<p>The code alone should explain as much as possible the “<span style="text-decoration:underline;">what</span>” and the “<span style="text-decoration:underline;">how</span>”</p>

<ul>
  <li>Use JavaDocs to describe the roles of classes and the contracts of methods, in cases where the contract is not obvious or intuitive from the method name (the “what”).</li>
  <li>The flow of the code should give a good description of the “how”.
Think of variable and method names as part of the code documenting itself.</li>
  <li>It often makes reading the code easier if larger blocks that form a unit are moved into a private method with a descriptive name of what that block is doing</li>
</ul>

<p>In-code comments help explain the <span style="text-decoration:underline;">“why”</span></p>

<ul>
  <li>For example <code>// this specific code layout helps the JIT to better do this or that</code></li>
  <li>Or <code>// nulling out this field here means future write attempts are fail-fast</code></li>
  <li>Or <code>// for arguments with which this method is actually called, this seemingly naive approach works actually better than any optimized/smart version</code></li>
</ul>

<p>In-code comments should not state redundant information about the “what” and “how” that is already obvious in the code itself.</p>

<p>JavaDocs should not state meaningless information (just to satisfy the Checkstyle checker).</p>

<p><strong>Don’t:</strong></p>

<div class="highlight"><pre><code>/**
 * The symbol expression.
 */
public class CommonSymbolExpression {}
</code></pre></div>
<p><strong>Do:</strong></p>

<div class="highlight"><pre><code>/**
 * An expression that wraps a single specific symbol.
 * A symbol could be a unit, an alias, a variable, etc.
 */
public class CommonSymbolExpression {}
</code></pre></div>

<h3 id="branches-and-nesting">Branches and Nesting</h3>

<p>Avoid deep nesting of scopes, by flipping the if condition and exiting early.</p>

<p><strong>Don’t:</strong></p>

<div class="highlight"><pre><code>if (a) {
    if (b) { 
        if (c) {
            the main path
        }
    }
}
</code></pre></div>

<p><strong>Do</strong></p>

<div class="highlight"><pre><code>if (!a) {
	return ..
}

if (!b) {
	return ...
}

if (!c) {
	return ...
}

the main path
</code></pre></div>

<h2 id="design-and-structure">3. Design and Structure</h2>

<p>While it is hard to exactly specify what constitutes a good design, there are some properties that can serve as a <em>litmus test</em> for a good design. If these properties are given, the chances are good that the design is going into a good direction. If these properties cannot be achieved, there is a high probability that the design is flawed.</p>

<h3 id="immutability-and-eager-initialization">Immutability and Eager Initialization</h3>

<ol>
  <li>Try to use immutable types where possible, especially for APIs, messages, identifiers, properties, configuration, etc.</li>
  <li>A good general approach is to try and make as many fields of a class <code>final</code> as possible.</li>
  <li>Classes that are used as keys in maps should be strictly immutable and only have <code>final</code> fields (except maybe auxiliary fields, like lazy cached hash codes).</li>
  <li>Eagerly initialize classes. There should be no <code>init()</code> or <code>setup()</code> methods. Once the constructor completes, the object should be usable.</li>
</ol>

<h3 id="nullability-of-the-mutable-parts">Nullability of the Mutable Parts</h3>

<p>For nullability, the Flink codebase aims to follow these conventions:</p>

<ul>
  <li>Fields, parameters, and return types are always non-null, unless indicated otherwise</li>
  <li>All fields, parameters and method types that can be null should be annotated with <code>@javax.annotation.Nullable</code>. 
That way, you get warnings from IntelliJ about all sections where you have to reason about potential null values.</li>
  <li>For all mutable (non-final) fields that are not annotated, the assumption is that while the field value changes, there always is a value.
    <ul>
      <li>This should be double check whether these can in fact not be null throughout the lifetime of the object.</li>
    </ul>
  </li>
</ul>

<p><em>Note: This means that <code>@Nonnull</code> annotations are usually not necessary, but can be used in certain cases to override a previous annotation, or to point non-nullability out in a context where one would expect a nullable value.</em></p>

<p><code>Optional</code> is a good solution as a return type for method that may or may not have a result, so nullable return types are good candidates to be replaced with <code>Optional</code>. 
See also <a href="code-style-and-quality-java.md#java-optional">usage of Java Optional</a>.</p>

<h3 id="avoid-code-duplication">Avoid Code Duplication</h3>

<ol>
  <li>Whenever you are about to copy/paste some code, or reproduce a similar type of functionality in a different place, think about the ways how to refactor/reuse/abstract the changes to avoid the duplication.</li>
  <li>Common behavior between different specializations should be shared in a common component (or a shared superclass).</li>
  <li>Always use “private static final” constants instead of duplicating strings or other special values at different locations. Constants should be declared in the top member area of a class.</li>
</ol>

<h3 id="design-for-testability">Design for Testability</h3>

<p>Code that is easily testable typically has good separation of concerns and is structured to be reusable outside the original context (by being easily reusable in tests).</p>

<p>A good summary or problems / symptoms and recommended refactoring is in the PDF linked below. 
Please note that while the examples in the PDF often use a dependency injection framework (Guice), it works in the same way without such a framework.<sup id="fnref:1"><a href="#fn:1" class="footnote">1</a></sup></p>

<p><a href="http://misko.hevery.com/attachments/Guide-Writing%20Testable%20Code.pdf">http://misko.hevery.com/attachments/Guide-Writing%20Testable%20Code.pdf</a></p>

<p>Here is a compact summary of the most important aspects.</p>

<p><strong>Inject dependencies</strong></p>

<p>Reusability becomes easier if constructors don’t create their dependencies (the objects assigned to the fields), but accept them as parameters.</p>

<ul>
  <li>Effectively, constructors should have no <code>new</code> keyword.</li>
  <li>Exceptions are creating a new empty collection (<code>new ArrayList&lt;&gt;()</code>) or similar auxiliary fields (objects that have only primitive dependencies).</li>
</ul>

<p>To make instantiation easy / readable, add factory methods or additional convenience constructors to construct whole object with dependencies.</p>

<p>In no case should it ever be required to use a reflection or a “Whitebox” util to change the fields of an object in a test, or to use PowerMock to intercept a “new” call and supply a mock.</p>

<p><strong>Avoid “too many collaborators”</strong></p>

<p>If you have to take a big set of other components into account during testing (“too many collaborators”), consider refactoring.</p>

<p>The component/class you want to test probably depends on another broad component (and its implementation), rather than on the minimal interface (abstraction) required for its work.</p>

<p>In that case, segregate the interfaces (factor out the minimal required interface) and supply a test stub in that case.</p>

<ul>
  <li>For example, if testing a S3RecoverableMultiPartUploader requires actual S3 access
then the S3 access should be factored out into an interface and test should replace it by a test stub</li>
  <li>This naturally requires to be able to inject dependencies (see above)</li>
</ul>

<p>⇒ Please note that these steps often require more effort in implementing tests (factoring out interfaces, creating dedicated test stubs), but make the tests more resilient to changes in other components, i.e., you do not need to touch the tests when making unrelated changes.</p>

<p><strong>Write targeted tests</strong></p>

<ul>
  <li><span style="text-decoration:underline;">Test contracts not implementations</span>: Test that after a sequence of actions, the components are in a certain state, rather than testing that the components followed a sequence of internal state modifications.
    <ul>
      <li>For example, a typical antipattern is to check whether one specific method was called as part of the test</li>
    </ul>
  </li>
  <li>
    <p>A way to enforce this is to try to follow the <em>Arrange</em>, <em>Act</em>, <em>Assert</em> test structure when writing a unit test (<a href="https://xp123.com/articles/3a-arrange-act-assert/">https://xp123.com/articles/3a-arrange-act-assert/</a>)</p>

    <p>This helps to communicate the intention of the test (what is the scenario under test) rather than the mechanics of the tests. The technical bits go to a static methods at the bottom of the test class.</p>

    <p>Example of tests in Flink that follow this pattern are:</p>

    <ul>
      <li><a href="https://github.com/apache/flink/blob/master/flink-core/src/test/java/org/apache/flink/util/LinkedOptionalMapTest.java">https://github.com/apache/flink/blob/master/flink-core/src/test/java/org/apache/flink/util/LinkedOptionalMapTest.java</a></li>
      <li><a href="https://github.com/apache/flink/blob/master/flink-filesystems/flink-s3-fs-base/src/test/java/org/apache/flink/fs/s3/common/writer/RecoverableMultiPartUploadImplTest.java">https://github.com/apache/flink/blob/master/flink-filesystems/flink-s3-fs-base/src/test/java/org/apache/flink/fs/s3/common/writer/RecoverableMultiPartUploadImplTest.java</a></li>
    </ul>
  </li>
</ul>

<p><strong>Avoid Mockito - Use reusable test implementations</strong></p>

<ul>
  <li>Mockito-based tests tend to be costly to maintain in the long run by encouraging duplication of functionality and testing for implementation rather than effect
    <ul>
      <li>More details: <a href="https://docs.google.com/presentation/d/1fZlTjOJscwmzYadPGl23aui6zopl94Mn5smG-rB0qT8">https://docs.google.com/presentation/d/1fZlTjOJscwmzYadPGl23aui6zopl94Mn5smG-rB0qT8</a></li>
    </ul>
  </li>
  <li>Instead, create reusable test implementations and utilities
    <ul>
      <li>That way, when some class changes, we only have to update a few test utils or mocks</li>
    </ul>
  </li>
</ul>

<h3 id="performance-awareness">Performance Awareness</h3>

<p>We can conceptually distinguish between code that “coordinates” and code that “processes data”. Code that coordinates should always favor simplicity and cleanness. Data processing code is highly performance critical and should optimize for performance.</p>

<p>That means still applying the general idea of the sections above, but possibly forgoing some aspects in some place, in order to achieve higher performance.</p>

<p><strong>Which code paths are Data Processing paths?</strong></p>

<ul>
  <li><span style="text-decoration:underline;">Per-record code paths:</span> Methods and code paths that are called for each record. Found for example in Connectors, Serializers, State Backends, Formats, Tasks, Operators, Metrics, runtime data structures, etc.</li>
  <li><span style="text-decoration:underline;">I/O methods:</span> Transferring messages or chunks of data in buffers. Examples are in the RPC system, Network Stack, FileSystems, Encoders / Decoders, etc.</li>
</ul>

<p><strong>Things that performance critical code may do that we would otherwise avoid</strong></p>

<ul>
  <li>Using (and reusing) mutable objects to take pressure off the GC (and sometimes help with cache locality), thus forgoing the strive for immutability.</li>
  <li>Using primitive types, arrays of primitive types, or MemorySegment/ByteBuffer and encoding meaning into the primitive types and byte sequences, rather than encapsulating the behavior in dedicated classes and using objects.</li>
  <li>Structuring the code to amortize expensive work (allocations, lookups, virtual method calls, …) across multiple records, for example by doing the work once per buffer/bundle/batch.</li>
  <li>Code layout optimized for the JIT rather than for readability. Examples are inlining fields from other classes (in cases where it is doubtful whether the JIT would do that optimization at runtime), or structuring code to help the JIT compiler with inlining, loop unrolling, vectorization, etc.</li>
</ul>

<h2 id="concurrency-and-threading">4. Concurrency and Threading</h2>

<p><strong>Most code paths should not require any concurrency.</strong> The right internal abstractions should obviate the need for concurrency in almost all cases.</p>

<ul>
  <li>The Flink core and runtime use concurrency to provide these building blocks.
Examples are in the RPC system, Network Stack, in the Task’s mailbox model, or some predefined Source / Sink utilities.</li>
  <li>We are not fully there, but any new addition that introduces implements its own concurrency should be under scrutiny, unless it falls into the above category of core system building blocks.</li>
  <li>Contributors should reach out to committers if they feel they need to implement concurrent code to see if there is an existing abstraction/building-block, or if one should be added.</li>
</ul>

<p><strong>When developing a component think about threading model and synchronization points ahead.</strong></p>

<ul>
  <li>For example: single threaded, blocking, non-blocking, synchronous, asynchronous, multi threaded, thread pool, message queues, volatile, synchronized block/methods, mutexes, atomics, callbacks, …</li>
  <li>Getting those things right and thinking about them ahead is even more important than designing classes interfaces/responsibilities, since it’s much harder to change later on.</li>
</ul>

<p><strong>Try to avoid using threads all together if possible in any way.</strong></p>

<ul>
  <li>If you feel you have a case for spawning a thread, point this out in the pull request as something to be explicitly reviewed.</li>
</ul>

<p><strong>Be aware that using threads is in fact much harder than it initially looks</strong></p>

<ul>
  <li>Clean shutdown of threads is very tricky.</li>
  <li>Handling interruptions in a rock solid fashion (avoid both slow shutdown and live locks) requires almost a Java Wizard</li>
  <li>Ensuring clean error propagation out of threads in all cases needs thorough design.</li>
  <li>Complexity of multi-threaded application/component/class grows exponentially, with each additional synchronisation point/block/critical section. Your code initially might be easy enough to understand, but can quickly grow beyond that point.</li>
  <li>Proper testing of multithreaded code is basically impossible, while alternative approaches (like asynchronous code, non-blocking code, actor model with message queues) are quite easy to test.</li>
  <li>Usually multi-threaded code is often even less efficient compared to alternative approaches on modern hardware.</li>
</ul>

<p><strong>Be aware of the java.util.concurrent.CompletableFuture</strong></p>

<ul>
  <li>Like with other concurrent code, there should rarely be the need to use a CompletableFuture</li>
  <li>Completing a future would also complete on the calling thread any chained futures that are waiting for the result to be completed, unless a completion executor specified explicitly.</li>
  <li>This can be intentional, if the entire execution should be synchronous / single-threaded, as for example in parts of the Scheduler / ExecutionGraph.
    <ul>
      <li>Flink even makes use of a “main-thread executor” to allow calling chained handlers in the same thread as a single-threaded RPC endpoint runs</li>
    </ul>
  </li>
  <li>This can be unexpected, if the thread that completes the future is a sensitive thread.
    <ul>
      <li>It may be better to use <code>CompletableFuture.supplyAsync(value, executor)</code> in that case, instead of <code>future.complete(value)</code> when an executor is available</li>
    </ul>
  </li>
  <li>When blocking on a future awaiting completion, always supply a timeout for a result instead of waiting indefinitely, and handle timeouts explicitly.</li>
  <li>Use <code>CompletableFuture.allOf()</code>/<code>anyOf()</code>, <code>ExecutorCompletionService</code>, or <code>org.apache.flink.runtime.concurrent.FutureUtils#waitForAll</code> if you need to wait for: all the results/any of the results/all the results but handled by (approximate) completion order.</li>
</ul>

<h2 id="dependencies-and-modules">5. Dependencies and Modules</h2>

<ul>
  <li><strong>Keep the dependency footprint small</strong>
    <ul>
      <li>The more dependencies the harder it gets for the community to manage them as a whole.</li>
      <li>Dependency management includes dependency conflicts, maintaining licenses and related notices, and handling security vulnerabilities.</li>
      <li>Discuss whether the dependency should be shaded/relocated to avoid future conflicts.</li>
    </ul>
  </li>
  <li><strong>Don’t add a dependency for just one method</strong>
    <ul>
      <li>Use Java built-in means if possible.</li>
      <li>If the method is Apache-licensed, you can copy the method into a Flink utility class with proper attribution.</li>
    </ul>
  </li>
  <li><strong>Declaration of dependencies</strong>
    <ul>
      <li>Declare dependencies that you explicitly rely on, whether it provides classes you directly import and use or it’s something that provides a service you directly use, like Log4J.</li>
      <li>Transitive dependencies should only supply dependencies that are needed at runtime but that you don’t use yourself.</li>
      <li>[<a href="https://stackoverflow.com/questions/15177661/maven-transitive-dependencies">source</a>]</li>
    </ul>
  </li>
  <li><strong>Location of classes in the Maven modules</strong>
    <ul>
      <li>Whenever you create a new class, think about where to put it.</li>
      <li>A class might be used by multiple modules in the future and might belong into a <code>common</code> module in this case.</li>
    </ul>
  </li>
</ul>

<hr />

<div class="footnotes">
  <ol>
    <li id="fn:1">

      <p>We are keeping such frameworks out of Flink, to make debugging easier and avoid dependency clashes. <a href="#fnref:1" class="reversefootnote">&#8617;</a></p>
    </li>
  </ol>
</div>


  </div>
</div>

      </div>
    </div>

    <hr />

    <div class="row">
      <div class="footer text-center col-sm-12">
        <p>Copyright © 2014-2019 <a href="http://apache.org">The Apache Software Foundation</a>. All Rights Reserved.</p>
        <p>Apache Flink, Flink®, Apache®, the squirrel logo, and the Apache feather logo are either registered trademarks or trademarks of The Apache Software Foundation.</p>
        <p><a href="/privacy-policy.html">Privacy Policy</a> &middot; <a href="/blog/feed.xml">RSS feed</a></p>
      </div>
    </div>
    </div><!-- /.container -->

    <!-- Include all compiled plugins (below), or include individual files as needed -->
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery.matchHeight/0.7.0/jquery.matchHeight-min.js"></script>
    <script src="/js/codetabs.js"></script>
    <script src="/js/stickysidebar.js"></script>

    <!-- Google Analytics -->
    <script>
      (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
      (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
      m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
      })(window,document,'script','//www.google-analytics.com/analytics.js','ga');

      ga('create', 'UA-52545728-1', 'auto');
      ga('send', 'pageview');
    </script>
  </body>
</html>
