Offensive Programming Book
Welcome
Book version
Book production
Preamble
1
Programming styles
1.1
Defensive programming style
1.2
Offensive programming style
2
Application in R language
2.1
A simple case
2.2
Defensive programming
2.3
Offensive programming
2.3.1
What is different?
2.3.2
Semantic argument naming
2.4
Back to definition
3
Putting in action wyz.code.offensiveProgramming
3.1
Package overview
4
The type factory
4.1
Get recorded types inventory
4.2
Understanding the model
4.3
Register your own type
4.4
Get access to verification functions
4.5
Some hints
4.6
Enforcing use of your own type factory
5
Semantic names
5.1
What is semantic naming?
5.2
Verifying a function parameter or return type declaration
5.3
Verifying a class name
5.4
Verifying a function name
5.5
Get naming balance from an R object
6
Evaluation modes
6.1
Understanding evaluation modes
6.2
Instantiating evaluation mode
7
Running functions
7.1
Prerequisites
7.2
Function return types definition verification
7.3
Transient invocations
7.3.1
Nominal case
7.3.2
Prerequisite mismatch
7.3.3
Object function call
7.4
Persistent invocations
7.4.1
Nominal persistent case
7.4.2
Subtile change
7.4.3
Call case with named and positional parameters
7.4.4
Call case with ellipsis
7.4.5
Second call case with ellipsis
8
Running test cases
8.1
Reusing defined test case definitions
8.2
Embedding test cases in class definition
8.2.1
A simple case
8.2.2
A more complex case
8.3
Test case definitions verification
8.4
Discovering test cases descriptions
8.5
Run a test case
9
Generating
testthat
test files
9.1
Package
wyz.code.testthat
in action
9.1.1
Setting up the context
9.1.2
Unit test file generation
9.2
Generated unit test file content
9.3
Known-limits
10
Meta-testing
10.1
Wrapper function creation
10.2
Exploration function
10.3
A more complex example
10.4
An example using ellipsis
10.5
An example with imperative, default and ellipsis arguments
10.6
Pitfalls to avoid
11
Generating
R
documentation
11.1
Automated
R
documentation generation
11.2
Focus on
R
documentation generation
11.3
package
wyz.code.rdoc
utilities
11.3.1
Generate a
R
documentation section
11.3.2
Format an English sentence
11.3.3
Generate some
R
documentation content
11.3.4
Generate cross-ref to other
R
package
11.4
Manual pages generation
11.4.1
Context setup
11.4.2
Method manual page
11.4.3
Class manual page
11.4.4
Package manual page
11.4.5
In one shot
11.4.6
and a special case, from a standalone function
11.5
Known-limits
11.6
Opportunities
12
Implementation figures
12.1
File statistics
12.2
Code statistics
12.3
Test and coverage
13
Conclusion
13.1
Benefits of offensive programming
13.2
Concerns of offensive programming
13.3
Your feedback is welcome
Explicit - Lege feliciter
instigator Fabien GELINEAU
Offensive Programming Book
Explicit - Lege feliciter