
<!DOCTYPE html>
<html lang="en" dir=ZgotmplZ>

<head>
  


<link rel="stylesheet" href="/bootstrap/css/bootstrap.min.css">
<script src="/bootstrap/js/bootstrap.bundle.min.js"></script>
<link rel="stylesheet" type="text/css" href="/font-awesome/css/font-awesome.min.css">
<script src="/js/anchor.min.js"></script>
<script src="/js/flink.js"></script>
<link rel="canonical" href="https://flink.apache.org/how-to-contribute/code-style-and-quality-common/">

  <meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="Code Style and Quality Guide — Common Rules # Preamble # Pull Requests &amp; Changes # Common Coding Guide # Java Language Guide # Scala Language Guide # Components Guide # Formatting Guide # 1. Copyright # Each file must include the Apache license information as a header.
/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership.">
<meta name="theme-color" content="#FFFFFF"><meta property="og:title" content="Code Style and Quality Guide — Common Rules" />
<meta property="og:description" content="Code Style and Quality Guide — Common Rules # Preamble # Pull Requests &amp; Changes # Common Coding Guide # Java Language Guide # Scala Language Guide # Components Guide # Formatting Guide # 1. Copyright # Each file must include the Apache license information as a header.
/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership." />
<meta property="og:type" content="article" />
<meta property="og:url" content="https://flink.apache.org/how-to-contribute/code-style-and-quality-common/" /><meta property="article:section" content="how-to-contribute" />


<title>Code Style and Quality Guide — Common Rules | Apache Flink</title>
<link rel="manifest" href="/manifest.json">
<link rel="icon" href="/favicon.png" type="image/x-icon">
<link rel="alternate" hreflang="zh" href="https://flink.apache.org/zh/how-to-contribute/code-style-and-quality-common/" title="Code Style and Quality Guide — Common Rules">

<link rel="stylesheet" href="/book.min.22eceb4d17baa9cdc0f57345edd6f215a40474022dfee39b63befb5fb3c596b5.css" integrity="sha256-IuzrTRe6qc3A9XNF7dbyFaQEdAIt/uObY777X7PFlrU=">
<script defer src="/en.search.min.2698f0d1b683dae4d6cb071668b310a55ebcf1c48d11410a015a51d90105b53e.js" integrity="sha256-Jpjw0baD2uTWywcWaLMQpV688cSNEUEKAVpR2QEFtT4="></script>
<!--
Made with Book Theme
https://github.com/alex-shpak/hugo-book
-->

  <meta name="generator" content="Hugo 0.124.1">

    
    <script>
      var _paq = window._paq = window._paq || [];
       
       
      _paq.push(['disableCookies']);
       
      _paq.push(["setDomains", ["*.flink.apache.org","*.nightlies.apache.org/flink"]]);
      _paq.push(['trackPageView']);
      _paq.push(['enableLinkTracking']);
      (function() {
        var u="//analytics.apache.org/";
        _paq.push(['setTrackerUrl', u+'matomo.php']);
        _paq.push(['setSiteId', '1']);
        var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
        g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
      })();
    </script>
    
</head>

<body dir=ZgotmplZ>
  


<header>
  <nav class="navbar navbar-expand-xl">
    <div class="container-fluid">
      <a class="navbar-brand" href="/">
        <img src="/img/logo/png/100/flink_squirrel_100_color.png" alt="Apache Flink" height="47" width="47" class="d-inline-block align-text-middle">
        <span>Apache Flink</span>
      </a>
      <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
          <i class="fa fa-bars navbar-toggler-icon"></i>
      </button>
      <div class="collapse navbar-collapse" id="navbarSupportedContent">
        <ul class="navbar-nav">
          





    
      
  
    <li class="nav-item dropdown">
      <a class="nav-link dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown" aria-expanded="false">About</a>
      <ul class="dropdown-menu">
        
          <li>
            
  
    <a class="dropdown-item" href="/what-is-flink/flink-architecture/">Architecture</a>
  

          </li>
        
          <li>
            
  
    <a class="dropdown-item" href="/what-is-flink/flink-applications/">Applications</a>
  

          </li>
        
          <li>
            
  
    <a class="dropdown-item" href="/what-is-flink/flink-operations/">Operations</a>
  

          </li>
        
          <li>
            
  
    <a class="dropdown-item" href="/what-is-flink/use-cases/">Use Cases</a>
  

          </li>
        
          <li>
            
  
    <a class="dropdown-item" href="/what-is-flink/powered-by/">Powered By</a>
  

          </li>
        
          <li>
            
  
    <a class="dropdown-item" href="/what-is-flink/roadmap/">Roadmap</a>
  

          </li>
        
          <li>
            
  
    <a class="dropdown-item" href="/what-is-flink/community/">Community & Project Info</a>
  

          </li>
        
          <li>
            
  
    <a class="dropdown-item" href="/what-is-flink/security/">Security</a>
  

          </li>
        
          <li>
            
  
    <a class="dropdown-item" href="/what-is-flink/special-thanks/">Special Thanks</a>
  

          </li>
        
      </ul>
    </li>
  

    
      
  
    <li class="nav-item dropdown">
      <a class="nav-link dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown" aria-expanded="false">Getting Started</a>
      <ul class="dropdown-menu">
        
          <li>
            
  
    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/docs/try-flink/local_installation/">With Flink<i class="link fa fa-external-link title" aria-hidden="true"></i>
    </a>
  

          </li>
        
          <li>
            
  
    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-kubernetes-operator-docs-stable/docs/try-flink-kubernetes-operator/quick-start/">With Flink Kubernetes Operator<i class="link fa fa-external-link title" aria-hidden="true"></i>
    </a>
  

          </li>
        
          <li>
            
  
    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-cdc-docs-stable/docs/get-started/introduction/">With Flink CDC<i class="link fa fa-external-link title" aria-hidden="true"></i>
    </a>
  

          </li>
        
          <li>
            
  
    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-ml-docs-stable/docs/try-flink-ml/quick-start/">With Flink ML<i class="link fa fa-external-link title" aria-hidden="true"></i>
    </a>
  

          </li>
        
          <li>
            
  
    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-statefun-docs-stable/getting-started/project-setup.html">With Flink Stateful Functions<i class="link fa fa-external-link title" aria-hidden="true"></i>
    </a>
  

          </li>
        
          <li>
            
  
    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/docs/learn-flink/overview/">Training Course<i class="link fa fa-external-link title" aria-hidden="true"></i>
    </a>
  

          </li>
        
      </ul>
    </li>
  

    
      
  
    <li class="nav-item dropdown">
      <a class="nav-link dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown" aria-expanded="false">Documentation</a>
      <ul class="dropdown-menu">
        
          <li>
            
  
    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-stable/">Flink 1.19 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
    </a>
  

          </li>
        
          <li>
            
  
    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-docs-master/">Flink Master (snapshot)<i class="link fa fa-external-link title" aria-hidden="true"></i>
    </a>
  

          </li>
        
          <li>
            
  
    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-kubernetes-operator-docs-stable/">Kubernetes Operator 1.8 (latest)<i class="link fa fa-external-link title" aria-hidden="true"></i>
    </a>
  

          </li>
        
          <li>
            
  
    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-kubernetes-operator-docs-main">Kubernetes Operator Main (snapshot)<i class="link fa fa-external-link title" aria-hidden="true"></i>
    </a>
  

          </li>
        
          <li>
            
  
    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-cdc-docs-stable">CDC 3.0 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
    </a>
  

          </li>
        
          <li>
            
  
    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-cdc-docs-master">CDC Master (snapshot)<i class="link fa fa-external-link title" aria-hidden="true"></i>
    </a>
  

          </li>
        
          <li>
            
  
    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-ml-docs-stable/">ML 2.3 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
    </a>
  

          </li>
        
          <li>
            
  
    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-ml-docs-master">ML Master (snapshot)<i class="link fa fa-external-link title" aria-hidden="true"></i>
    </a>
  

          </li>
        
          <li>
            
  
    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-statefun-docs-stable/">Stateful Functions 3.3 (stable)<i class="link fa fa-external-link title" aria-hidden="true"></i>
    </a>
  

          </li>
        
          <li>
            
  
    <a class="dropdown-item" href="https://nightlies.apache.org/flink/flink-statefun-docs-master">Stateful Functions Master (snapshot)<i class="link fa fa-external-link title" aria-hidden="true"></i>
    </a>
  

          </li>
        
      </ul>
    </li>
  

    
      
  
    <li class="nav-item dropdown">
      <a class="nav-link dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown" aria-expanded="false">How to Contribute</a>
      <ul class="dropdown-menu">
        
          <li>
            
  
    <a class="dropdown-item" href="/how-to-contribute/overview/">Overview</a>
  

          </li>
        
          <li>
            
  
    <a class="dropdown-item" href="/how-to-contribute/contribute-code/">Contribute Code</a>
  

          </li>
        
          <li>
            
  
    <a class="dropdown-item" href="/how-to-contribute/reviewing-prs/">Review Pull Requests</a>
  

          </li>
        
          <li>
            
  
    <a class="dropdown-item" href="/how-to-contribute/code-style-and-quality-preamble/">Code Style and Quality Guide</a>
  

          </li>
        
          <li>
            
  
    <a class="dropdown-item" href="/how-to-contribute/contribute-documentation/">Contribute Documentation</a>
  

          </li>
        
          <li>
            
  
    <a class="dropdown-item" href="/how-to-contribute/documentation-style-guide/">Documentation Style Guide</a>
  

          </li>
        
          <li>
            
  
    <a class="dropdown-item" href="/how-to-contribute/improve-website/">Contribute to the Website</a>
  

          </li>
        
          <li>
            
  
    <a class="dropdown-item" href="/how-to-contribute/getting-help/">Getting Help</a>
  

          </li>
        
      </ul>
    </li>
  

    


    
      
  
    <li class="nav-item">
      
  
    <a class="nav-link" href="/posts/">Flink Blog</a>
  

    </li>
  

    
      
  
    <li class="nav-item">
      
  
    <a class="nav-link" href="/downloads/">Downloads</a>
  

    </li>
  

    


    









        </ul>
        <div class="book-search">
          <div class="book-search-spinner hidden">
            <i class="fa fa-refresh fa-spin"></i>
          </div>
          <form class="search-bar d-flex" onsubmit="return false;"su>
            <input type="text" id="book-search-input" placeholder="Search" aria-label="Search" maxlength="64" data-hotkeys="s/">
            <i class="fa fa-search search"></i>
            <i class="fa fa-circle-o-notch fa-spin spinner"></i>
          </form>
          <div class="book-search-spinner hidden"></div>
          <ul id="book-search-results"></ul>
        </div>
      </div>
    </div>
  </nav>
  <div class="navbar-clearfix"></div>
</header>
 
  
      <main class="flex">
        <section class="container book-page">
          
  <article class="markdown"><h1 id="code-style-and-quality-guide--common-rules">
  Code Style and Quality Guide — Common Rules
  <a class="anchor" href="#code-style-and-quality-guide--common-rules">#</a>
</h1>
<h4 id="preamblehahahugoshortcode53s0hbhb">
  <a href="/how-to-contribute/code-style-and-quality-preamble/">Preamble</a>
  <a class="anchor" href="#preamblehahahugoshortcode53s0hbhb">#</a>
</h4>
<h4 id="pull-requests--changeshahahugoshortcode53s1hbhb">
  <a href="/how-to-contribute/code-style-and-quality-pull-requests/">Pull Requests &amp; Changes</a>
  <a class="anchor" href="#pull-requests--changeshahahugoshortcode53s1hbhb">#</a>
</h4>
<h4 id="common-coding-guidehahahugoshortcode53s2hbhb">
  <a href="/how-to-contribute/code-style-and-quality-common/">Common Coding Guide</a>
  <a class="anchor" href="#common-coding-guidehahahugoshortcode53s2hbhb">#</a>
</h4>
<h4 id="java-language-guidehahahugoshortcode53s3hbhb">
  <a href="/how-to-contribute/code-style-and-quality-java/">Java Language Guide</a>
  <a class="anchor" href="#java-language-guidehahahugoshortcode53s3hbhb">#</a>
</h4>
<h4 id="scala-language-guidehahahugoshortcode53s4hbhb">
  <a href="/how-to-contribute/code-style-and-quality-scala/">Scala Language Guide</a>
  <a class="anchor" href="#scala-language-guidehahahugoshortcode53s4hbhb">#</a>
</h4>
<h4 id="components-guidehahahugoshortcode53s5hbhb">
  <a href="/how-to-contribute/code-style-and-quality-components/">Components Guide</a>
  <a class="anchor" href="#components-guidehahahugoshortcode53s5hbhb">#</a>
</h4>
<h4 id="formatting-guidehahahugoshortcode53s6hbhb">
  <a href="/how-to-contribute/code-style-and-quality-formatting/">Formatting Guide</a>
  <a class="anchor" href="#formatting-guidehahahugoshortcode53s6hbhb">#</a>
</h4>
<hr>
<h2 id="1-copyright">
  1. Copyright
  <a class="anchor" href="#1-copyright">#</a>
</h2>
<p>Each file must include the Apache license information as a header.</p>
<pre tabindex="0"><code>/*
 * Licensed to the Apache Software Foundation (ASF) under one
 * or more contributor license agreements.  See the NOTICE file
 * distributed with this work for additional information
 * regarding copyright ownership.  The ASF licenses this file
 * to you under the Apache License, Version 2.0 (the
 * &#34;License&#34;); you may not use this file except in compliance
 * with the License.  You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an &#34;AS IS&#34; BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
</code></pre><h2 id="2-tools">
  2. Tools
  <a class="anchor" href="#2-tools">#</a>
</h2>
<p>We recommend to follow the 
<a href="//nightlies.apache.org/flink/flink-docs-stable/docs/flinkdev/ide_setup/">
    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
  <a class="anchor" href="#warnings">#</a>
</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="3-comments-and-code-readability">
  3. Comments And Code Readability
  <a class="anchor" href="#3-comments-and-code-readability">#</a>
</h2>
<h3 id="comments">
  Comments
  <a class="anchor" href="#comments">#</a>
</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>
<pre tabindex="0"><code>/**
 * The symbol expression.
 */
public class CommonSymbolExpression {}
</code></pre><p><strong>Do:</strong></p>
<pre tabindex="0"><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><h3 id="branches-and-nesting">
  Branches and Nesting
  <a class="anchor" href="#branches-and-nesting">#</a>
</h3>
<p>Avoid deep nesting of scopes, by flipping the if condition and exiting early.</p>
<p><strong>Don’t:</strong></p>
<pre tabindex="0"><code>if (a) {
    if (b) {
        if (c) {
            the main path
        }
    }
}
</code></pre><p><strong>Do</strong></p>
<pre tabindex="0"><code>if (!a) {
	return ..
}

if (!b) {
	return ...
}

if (!c) {
	return ...
}

the main path
</code></pre><h2 id="4-design-and-structure">
  4. Design and Structure
  <a class="anchor" href="#4-design-and-structure">#</a>
</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
  <a class="anchor" href="#immutability-and-eager-initialization">#</a>
</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
  <a class="anchor" href="#nullability-of-the-mutable-parts">#</a>
</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="/how-to-contribute/code-style-and-quality-java/#java-optional">usage of Java Optional</a>.</p>
<h3 id="avoid-code-duplication">
  Avoid Code Duplication
  <a class="anchor" href="#avoid-code-duplication">#</a>
</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
  <a class="anchor" href="#design-for-testability">#</a>
</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-ref" role="doc-noteref">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>
<h3 id="performance-awareness">
  Performance Awareness
  <a class="anchor" href="#performance-awareness">#</a>
</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="5-concurrency-and-threading">
  5. Concurrency and Threading
  <a class="anchor" href="#5-concurrency-and-threading">#</a>
</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="6-dependencies-and-modules">
  6. Dependencies and Modules
  <a class="anchor" href="#6-dependencies-and-modules">#</a>
</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&rsquo;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&rsquo;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>
<h2 id="7-testing">
  7. Testing
  <a class="anchor" href="#7-testing">#</a>
</h2>
<h3 id="tooling">
  Tooling
  <a class="anchor" href="#tooling">#</a>
</h3>
<p>We are moving our codebase to <a href="https://junit.org/junit5/docs/current/user-guide/">JUnit 5</a> and <a href="https://assertj.github.io/doc/">AssertJ</a> as our testing framework and assertions library of choice.</p>
<p>Unless there is a specific reason, make sure you use JUnit 5 and AssertJ when contributing to Flink with new tests and even when modifying existing tests. Don&rsquo;t use Hamcrest, JUnit assertions and <code>assert</code> directive.
Make your tests readable and don&rsquo;t duplicate assertions logic provided by AssertJ or by <a href="https://assertj.github.io/doc/#assertj-core-custom-assertions">custom assertions</a> provided by some flink modules.
For example, avoid:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-java" data-lang="java"><span class="line"><span class="cl"><span class="k">assert</span><span class="w"> </span><span class="n">list</span><span class="p">.</span><span class="na">size</span><span class="p">()</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="n">10</span><span class="p">;</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="n">String</span><span class="w"> </span><span class="n">item</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="n">list</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="n">assertTrue</span><span class="p">(</span><span class="n">item</span><span class="p">.</span><span class="na">length</span><span class="p">()</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="n">10</span><span class="p">);</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="p">}</span><span class="w">
</span></span></span></code></pre></div><p>And instead use:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-java" data-lang="java"><span class="line"><span class="cl"><span class="n">assertThat</span><span class="p">(</span><span class="n">list</span><span class="p">)</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="p">.</span><span class="na">hasSize</span><span class="p">(</span><span class="n">10</span><span class="p">)</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w">    </span><span class="p">.</span><span class="na">allMatch</span><span class="p">(</span><span class="n">item</span><span class="w"> </span><span class="o">-&gt;</span><span class="w"> </span><span class="n">item</span><span class="p">.</span><span class="na">length</span><span class="p">()</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="n">10</span><span class="p">);</span><span class="w">
</span></span></span></code></pre></div><h3 id="write-targeted-tests">
  Write targeted tests
  <a class="anchor" href="#write-targeted-tests">#</a>
</h3>
<ul>
<li>
<p><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.</p>
<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>
<h3 id="avoid-mockito---use-reusable-test-implementations">
  Avoid Mockito - Use reusable test implementations
  <a class="anchor" href="#avoid-mockito---use-reusable-test-implementations">#</a>
</h3>
<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="avoid-timeouts-in-junit-tests">
  Avoid timeouts in JUnit tests
  <a class="anchor" href="#avoid-timeouts-in-junit-tests">#</a>
</h3>
<p>Generally speaking, we should avoid setting local timeouts in JUnit tests but rather depend on the
global timeout in Azure. The global timeout benefits from taking thread dumps just before timing out
the build, easing debugging.</p>
<p>At the same time, any timeout value that you manually set is arbitrary. If it&rsquo;s set too low, you get
test instabilities. What too low means depends on numerous factors, such as hardware and current
utilization (especially I/O). Moreover, a local timeout is more maintenance-intensive. It&rsquo;s one more
knob where you can tweak a build. If you change the test a bit, you also need to double-check the
timeout. Hence, there have been quite a few commits that just increase timeouts.</p>
<div class="footnotes" role="doc-endnotes">
<hr>
<ol>
<li id="fn:1">
<p>We are keeping such frameworks out of Flink, to make debugging easier and avoid dependency clashes.&#160;<a href="#fnref:1" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p>
</li>
</ol>
</div>
</article>

          



  
    
    <div class="edit-this-page">
      <p>
        <a href="https://cwiki.apache.org/confluence/display/FLINK/Flink+Translation+Specifications">Want to contribute translation?</a>
      </p>
      <p>
        <a href="//github.com/apache/flink-web/edit/asf-site/docs/content/how-to-contribute/code-style-and-quality-common.md">
          Edit This Page<i class="fa fa-edit fa-fw"></i> 
        </a>
      </p>
    </div>

        </section>
        
          <aside class="book-toc">
            
  

<nav id="TableOfContents"><h3>On This Page <a href="javascript:void(0)" class="toc" onclick="collapseToc()"><i class="fa fa-times" aria-hidden="true"></i></a></h3>
  <ul>
    <li><a href="#code-style-and-quality-guide--common-rules">Code Style and Quality Guide — Common Rules</a>
      <ul>
        <li>
          <ul>
            <li></li>
          </ul>
        </li>
        <li><a href="#1-copyright">1. Copyright</a></li>
        <li><a href="#2-tools">2. Tools</a>
          <ul>
            <li><a href="#warnings">Warnings</a></li>
          </ul>
        </li>
        <li><a href="#3-comments-and-code-readability">3. Comments And Code Readability</a>
          <ul>
            <li><a href="#comments">Comments</a></li>
            <li><a href="#branches-and-nesting">Branches and Nesting</a></li>
          </ul>
        </li>
        <li><a href="#4-design-and-structure">4. Design and Structure</a>
          <ul>
            <li><a href="#immutability-and-eager-initialization">Immutability and Eager Initialization</a></li>
            <li><a href="#nullability-of-the-mutable-parts">Nullability of the Mutable Parts</a></li>
            <li><a href="#avoid-code-duplication">Avoid Code Duplication</a></li>
            <li><a href="#design-for-testability">Design for Testability</a></li>
            <li><a href="#performance-awareness">Performance Awareness</a></li>
          </ul>
        </li>
        <li><a href="#5-concurrency-and-threading">5. Concurrency and Threading</a></li>
        <li><a href="#6-dependencies-and-modules">6. Dependencies and Modules</a></li>
        <li><a href="#7-testing">7. Testing</a>
          <ul>
            <li><a href="#tooling">Tooling</a></li>
            <li><a href="#write-targeted-tests">Write targeted tests</a></li>
            <li><a href="#avoid-mockito---use-reusable-test-implementations">Avoid Mockito - Use reusable test implementations</a></li>
            <li><a href="#avoid-timeouts-in-junit-tests">Avoid timeouts in JUnit tests</a></li>
          </ul>
        </li>
      </ul>
    </li>
  </ul>
</nav>


          </aside>
          <aside class="expand-toc hidden">
            <a class="toc" onclick="expandToc()" href="javascript:void(0)">
              <i class="fa fa-bars" aria-hidden="true"></i>
            </a>
          </aside>
        
      </main>

      <footer>
        


<div class="separator"></div>
<div class="panels">
  <div class="wrapper">
      <div class="panel">
        <ul>
          <li>
            <a href="https://flink-packages.org/">flink-packages.org</a>
          </li>
          <li>
            <a href="https://www.apache.org/">Apache Software Foundation</a>
          </li>
          <li>
            <a href="https://www.apache.org/licenses/">License</a>
          </li>
          
          
          
            
          
            
          
          
            
          

          
            
              
            
          
            
              
                <li>
                  <a  href="/zh/how-to-contribute/code-style-and-quality-common/">
                    <i class="fa fa-globe" aria-hidden="true"></i>&nbsp;中文版
                  </a>
                </li>
              
            
          
       </ul>
      </div>
      <div class="panel">
        <ul>
          <li>
            <a href="/what-is-flink/security">Security</a-->
          </li>
          <li>
            <a href="https://www.apache.org/foundation/sponsorship.html">Donate</a>
          </li>
          <li>
            <a href="https://www.apache.org/foundation/thanks.html">Thanks</a>
          </li>
       </ul>
      </div>
      <div class="panel icons">
        <div>
          <a href="/posts">
            <div class="icon flink-blog-icon"></div>
            <span>Flink blog</span>
          </a>
        </div>
        <div>
          <a href="https://github.com/apache/flink">
            <div class="icon flink-github-icon"></div>
            <span>Github</span>
          </a>
        </div>
        <div>
          <a href="https://twitter.com/apacheflink">
            <div class="icon flink-twitter-icon"></div>
            <span>Twitter</span>
          </a>
        </div>
      </div>
  </div>
</div>

<hr/>

<div class="container disclaimer">
  <p>The contents of this website are © 2024 Apache Software Foundation under the terms of the Apache License v2. Apache Flink, Flink, and the Flink logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States and other countries.</p>
</div>



      </footer>
    
  </body>
</html>






