Keywords: Code, Program, Source code,
Programmer, Language, Skills, Clean Code, Code review, Static Analysis, Control
flow Analysis, Data flow Analysis, Cyclomatic complexity, Maintainability,
Tools.
o
Coding is the process of
building a computer program to accomplish a specific computing result or to
perform a particular task.
o
This work involves writing,
testing, debugging, and maintaining the source code of computer programs.
o
Computer coding works
through a series of steps. Typically, computer programmers write instructions
in a programming language such as Java or C#, which is then converted into a
format that the computer can understand and execute.
o
Code is not written the
same way typical human language is written. Instead, code can be written in
various programming languages, each with its own set of rules and syntax.
o Coding enables programmers to create computer software, applications, websites, and other digital tools that interact with data, execute algorithms, and perform automated tasks. Essentially, it's the language through which we communicate and instruct computers to perform functions and solve problems.
· Code review and Clean codeo Code review
ü
Analyze a section of code
or pseudo-code used to identify Code problems, Checklists for code reviews are
necessary
ü Checklists used for code reviews could include the following items: Design, Meaningful Names, Variables, Functions, Comments, Source code structure, Arithmetic Operations, Loops and Branches, Objects, Classes, Data structures, Error Handling, Boundaries, Unit Tests, Concurrency, Refactoring, Defensive Programming and others.
o
Code is clean if it can be
understood easily – by everyone on the team. Clean code can be read and
enhanced by a developer other than its original author. With understandability
comes readability, changeability, extensibility and maintainability
o
Clean Code General rules:
ü
Follow standard
conventions.
ü
Simpler is always better.
Reduce complexity as much as possible.
ü
Leave the code cleaner than
you find it.
ü Always find root cause. Always look for the root cause of a problem.
· Code Static Analysiso
The objective of static
analysis is to detect actual or potential defects in code to improve code
maintainability, Static analysis includes Control Flow Analysis, Measure
Complexity and Data flow analysis
o
Control Flow Analysis
ü
is a static technique where
the steps followed through a program are analyzed through the use of a control
flow graph
ü
There are a number of
anomalies which can be found in a system using this technique, including loops
that are badly designed (e.g., having multiple entry points or that do not
terminate), ambiguous targets of function calls in certain languages, incorrect
sequencing of operations, code that cannot be reached, uncalled functions, etc.
ü
Control flow analysis can
be used to determine cyclomatic complexity. The cyclomatic complexity is a
positive integer which represents the number of independent paths in a strongly
connected graph
ü
a metric used to indicate
the complexity of a program, It is a quantitative measure of the number of
linearly independent paths through a program's source code
ü
to define the cyclomatic
complexity of a program is to look at its control-flow graph, a directed
graph containing the basic blocks of
the program, with an edge between two basic blocks if control may pass from the
first to the second.
ü
The complexity M is then
defined as: M = E – N +
2P , E =
the number of edges of the graph, N = the number of nodes of the graph,
P =
the number of connected components.
o
Data flow Analysis
ü
covers a variety of
techniques which gather information about the use of variables in the code.
ü
The lifecycle of each
variable along a control flow path is investigated, (i.e., where it is
declared, defined, used, and destroyed), since potential anomalies can be
identified if these actions are used out of sequence
o
Improve the maintainability
of code:
ü
Poorly written,
uncommented, and unstructured code tends to be harder to maintain. It may
require more effort for developers to locate and analyze defects in the code,
and the modification of the code to correct a defect or add a feature is likely
to result in further defects being introduced.
ü
Static analysis is used to
verify compliance with coding standards and guidelines; where non-compliant
code is identified; it can be updated to improve its maintainability.
ü
These standards and
guidelines describe required coding and design practices such as conventions
for naming, commenting, indentation and modularization.
ü
code modularization includes measures of coupling (the
degree to which components rely on each other during execution) and cohesion (the
degree to which a component is self-contained and focused on a single task)
ü
A system that has good
maintainability is more likely to have a low measure of coupling and a high
measure of cohesion
o
Technical Skills
include:
ü
Proficiency in Programming
Languages
ü
Debugging Skills
ü
Understanding of Algorithms
and Data Structures
ü
Mathematical and Logic Skills
o
Soft Skills include:
ü
Critical Thinking and
Problem-Solving Abilities
ü
Attention to Detail and the
Ability to Work with Precision
ü
A Willingness to Learn and
Adapt to New Technologies
ü
Creativity
ü
Time Management and
Organization
ü
Flexibility and
Adaptability
o
Code Editors: Visual
Studio Code, Sublime, Notepad++, Vim, Atom, Brackets, and others
o
Integrated Development
Environment (IDE’S): MS Visual Studio, IntelliJ IDEA, NetBeans, Eclipse,
Android Studio, PyCharm, and others
o
Programming Languages:
C, Objective-C, C++, Java, Ruby, Python, C#, Go and Others
o
Static analysis tools: SonarQube,
CodeQL , CodePeer, CodesScene, and others
https://www.springboard.com/blog/software-engineering/coding-skills/
https://en.wikipedia.org/wiki/Cyclomatic_complexity
Clean Code Book, Robert Martin
Code Complete Book, Steve McConnell