Development tips: Difference between revisions

From miki
Jump to navigation Jump to search
 
Line 43: Line 43:
SCFLAGS += -Wa,-fdebug-compilation-dir,.
SCFLAGS += -Wa,-fdebug-compilation-dir,.
</source>
</source>

== Good practices ===
* [https://www.youtube.com/watch?v=z7w2lKG8zWM Felienne Hermans: How patterns in variable names can make code easier to read]
:* Avoid '''linguistic smells'''.
:: That is method or identifier that does more / less / reverse of what they say
:* Adopt '''name molds'''.
:: That is conventions on where to put quantifier, letter case... to increase the likelihood that developers pick the same variable names.


== Calendars ==
== Calendars ==

Latest revision as of 08:02, 23 May 2022

Summary of things I do frequently or that I learned the hard way

Console tips

  • Search for whole words occurence:
ag "\bWHOLEWORD\b" # or
ag -w WHOLEWORD

Advices

  • Always keep your tests in sync with your source code.
  • At the very least, this means in the same repository. Ideally code and tests are updated together in the same commit.
  • Make your startup / boot / init sequence independent of system configuration. Avoid early optimization.

Reproducible build

This section is dedicated to reproducible builds / build determinism / deterministic builds.

libraries / ar

With libraries produced with ar, use option D to produce deterministic build.

ar rcsD mylib.a foo.o bar.o

Alternatively one can run ranlib in deterministic mode:

ranlib -D mylib.a

I also made a custom python script ardee.py (that also works on libraries produce by ARM toolchain armar, which doesn't have the D flag)

ardee.py mylib.a

clang

See https://blog.llvm.org/2019/11/deterministic-builds-with-clang-and-lld.html .

Import flags include:

CCFLAGS       += -no-canonical-prefixes
CCFLAGS       += -fdebug-compilation-dir .
sCFLAGS       += -Wa,-fdebug-compilation-dir,.
SCFLAGS       += -Wa,-fdebug-compilation-dir,.

Good practices =

  • Avoid linguistic smells.
That is method or identifier that does more / less / reverse of what they say
  • Adopt name molds.
That is conventions on where to put quantifier, letter case... to increase the likelihood that developers pick the same variable names.

Calendars

Use ICU libraries that deal with all subtleties!