launchdarkly.com Open in urlscan Pro
199.232.194.22  Public Scan

Submitted URL: https://em.launchdarkly.com/dc/3xbM4tQLBeNyhupI5OyGys_6BA3nuo-RTkntzDwVTUnWBKSmprZpBlPYhvq7QM3qfPHSEwNX6FWqnoZGVltgkRpQHz_3p...
Effective URL: https://launchdarkly.com/blog/best-practices-for-coding-with-feature-flags/?utm_source=marketo&utm_medium=email&utm_campa...
Submission: On April 29 via api from US — Scanned from DE

Form analysis 2 forms found in the DOM

<form id="mktoForm_2272" __bizdiag="196383517" __biza="W___" novalidate="novalidate" class="mktoForm mktoHasWidth mktoLayoutLeft" style="font-family: Helvetica, Arial, sans-serif; font-size: 13px; color: rgb(51, 51, 51); width: 181px;"
  data-nb-form="b4373d6d-aced-4bcc-b9f7-08348644abf4">
  <style type="text/css">
    .mktoForm .mktoButtonWrap.mktoSimple .mktoButton {
      color: #fff;
      border: 1px solid #75ae4c;
      padding: 0.4em 1em;
      font-size: 1em;
      background-color: #99c47c;
      background-image: -webkit-gradient(linear, left top, left bottom, from(#99c47c), to(#75ae4c));
      background-image: -webkit-linear-gradient(top, #99c47c, #75ae4c);
      background-image: -moz-linear-gradient(top, #99c47c, #75ae4c);
      background-image: linear-gradient(to bottom, #99c47c, #75ae4c);
    }

    .mktoForm .mktoButtonWrap.mktoSimple .mktoButton:hover {
      border: 1px solid #447f19;
    }

    .mktoForm .mktoButtonWrap.mktoSimple .mktoButton:focus {
      outline: none;
      border: 1px solid #447f19;
    }

    .mktoForm .mktoButtonWrap.mktoSimple .mktoButton:active {
      background-color: #75ae4c;
      background-image: -webkit-gradient(linear, left top, left bottom, from(#75ae4c), to(#99c47c));
      background-image: -webkit-linear-gradient(top, #75ae4c, #99c47c);
      background-image: -moz-linear-gradient(top, #75ae4c, #99c47c);
      background-image: linear-gradient(to bottom, #75ae4c, #99c47c);
    }
  </style>
  <div class="mktoFormRow">
    <div class="mktoFieldDescriptor mktoFormCol">
      <div class="mktoOffset"></div>
      <div class="mktoFieldWrap mktoRequiredField"><label for="Email" id="LblEmail" class="mktoLabel mktoHasWidth">
          <div class="mktoAsterix">*</div>
        </label>
        <div class="mktoGutter mktoHasWidth"></div><input id="Email" name="Email" placeholder="Work Email" maxlength="255" aria-labelledby="LblEmail InstructEmail" type="email" class="mktoField mktoEmailField mktoHasWidth mktoRequired"
          aria-required="true" data-nb-id="b4373d6d-aced-4bcc-b9f7-08348644abf4"><span id="InstructEmail" tabindex="-1" class="mktoInstruction"></span>
        <div class="mktoClear"></div>
      </div>
      <div class="mktoClear"></div>
    </div>
    <div class="mktoClear"></div>
  </div>
  <div class="mktoFormRow"><input type="hidden" name="LeadSource" class="mktoField mktoFieldDescriptor mktoFormCol" value="Website">
    <div class="mktoClear"></div>
  </div>
  <div class="mktoFormRow"><input type="hidden" name="ltutmcampaign" class="mktoField mktoFieldDescriptor mktoFormCol" value="fufn">
    <div class="mktoClear"></div>
  </div>
  <div class="mktoFormRow"><input type="hidden" name="ltutmcontent" class="mktoField mktoFieldDescriptor mktoFormCol" value="null">
    <div class="mktoClear"></div>
  </div>
  <div class="mktoFormRow"><input type="hidden" name="ltutmmedium" class="mktoField mktoFieldDescriptor mktoFormCol" value="email">
    <div class="mktoClear"></div>
  </div>
  <div class="mktoFormRow"><input type="hidden" name="ltutmsource" class="mktoField mktoFieldDescriptor mktoFormCol" value="marketo">
    <div class="mktoClear"></div>
  </div>
  <div class="mktoFormRow"><input type="hidden" name="ltutmterm" class="mktoField mktoFieldDescriptor mktoFormCol" value="text">
    <div class="mktoClear"></div>
  </div>
  <div class="mktoButtonRow"><span class="mktoButtonWrap mktoSimple"><button type="submit" class="mktoButton">Yes, send me emails</button></span></div><input type="hidden" name="formid" class="mktoField mktoFieldDescriptor" value="2272"><input
    type="hidden" name="munchkinId" class="mktoField mktoFieldDescriptor" value="850-KKH-319">
</form>

<form __bizdiag="196383517" __biza="W___" novalidate="novalidate" class="mktoForm mktoHasWidth mktoLayoutLeft"
  style="font-family: Helvetica, Arial, sans-serif; font-size: 13px; color: rgb(51, 51, 51); visibility: hidden; position: absolute; top: -500px; left: -1000px; width: 1600px;"></form>

Text Content

For full functionality of this site it is necessary to enable JavaScript. Here
are the instructions how to enable JavaScript in your web browser.
LaunchDarkly

Feature Management

Feature Management

What is feature management?Why LaunchDarkly?Build vs. buyGuide to feature
management
Platform

Core Features

Platform overviewFeature flagsFeature WorkflowsPlatform architecture

Data

ExperimentationAnalyticsData Export

Connectivity

SDKsAPIsIntegrationsCode References
Solutions

Team

DevelopersDevOps & SREMobile

Use Cases

All use casesApp modernizationChange and release managementDigital
transformationFederal governmentFinancial services
Resources

Explore

DocsGuide & tutorialsWebinarsBlogResource center

Success Stories

Case studiesCustomers
Enterprise
Pricing
Sign InGet a Demo
LaunchDarkly BlogBlog
Best PracticesIndustry InsightsProduct UpdatesTeam & NewsPodcastsMore

Get Demo

BEST PRACTICES


BEST PRACTICES FOR CODING WITH FEATURE FLAGS

By Yoz Grahame   •   October 28, 2020
1 min read

Twitter

Facebook

LinkedIn

Copy Link


Code is a fragile, temperamental material. Engineers don’t just need a program
to function correctly; it should also be easy to read and easy to change. These
requirements often conflict with each other, and those conflicts cause much of
the difficulty inherent in software engineering.

LaunchDarkly’s core message is that feature flags significantly reduce the risk
and pain of working with code. But that reduction doesn’t happen automatically.
If used incorrectly, flags may add complexity and fragility to your codebase.

To help developers use flags more effectively, we’ve written a short best
practice guide: Improving flag usage in code. It features tips for:

 * designing component interfaces for flag-evaluating code
 * easier flag removal with fewer merge conflicts
 * defending against consistency problems

The Guides section of our Documentation site is a growing collection of best
practices from our Developer Advocates. It includes recommendations for creating
flags, deployment and release strategies, and reducing technical debt. There are
also tutorials that will walk you through different uses of LaunchDarkly, such
as targeting and experimentation.

We’re constantly updating and expanding our Guides. If you’re looking for the
best way to use LaunchDarkly in your app, check them out.



By Yoz Grahame

Twitter

Facebook

LinkedIn

Copy Link
You May Like
BEST PRACTICESWhat Is Continuous Testing? A Straightforward Introduction
BEST PRACTICESTesting in Production to Stay Safe and Sensible
APRIL 28, 2022   •   BEST PRACTICESTips & Tricks: How to Automate Percentage
Rollouts in LaunchDarkly

APRIL 21, 2022   •   BEST PRACTICESWrapping LaunchDarkly

APRIL 21, 2022   •   GALAXYRoll Up for the Galaxy Tour

APRIL 19, 2022   •   PRODUCT UPDATESBig Segments: Simple Targeting at Scale



INBOXES LOVE LAUNCHDARKLY.

Make sure you get all the content, tips, and news you can use.

*










Yes, send me emails


WE EMPOWER ALL TEAMS TO DELIVER AND CONTROL THEIR SOFTWARE.

Support

 * Support Home
 * Request Support
 * Documentation
 * Status

Why Us

 * ROI of feature management
 * Trust & security
 * Implementation
 * LaunchDarkly vs. competitors
 * LaunchDarkly on AWS
 * Economic impact of LaunchDarkly

Learn

 * Case studies
 * Webinars
 * Events
 * Blog
 * Podcast
 * Trajectory
 * Galaxy

Company

 * About us
 * Careers
 * Press & media
 * Partner program
 * Terms & policies
 * Contact us
 * Foundation

©2022 Catamorphic Co.

Twitter



LinkedIn



Meetup



YouTube



LaunchDarkly BlogClose
Best PracticesIndustry InsightsProduct UpdatesTeam & NewsPodcasts