.TH "doc_api_review_core_kdbGet_md" 3elektra "Mon Jan 9 2023" "Version 0.9.11" "Elektra" \" -*- nroff -*-
.ad l
.nh
.SH NAME
doc_api_review_core_kdbGet_md \- kdbGet 

.IP "\(bu" 2
start = 2021-03-20 19:10
.IP "\(bu" 2
end = 2021-03-20 19:25
.IP "\(bu" 2
reviewer = Stefan Hanreich stefanhani@gmail.com
.PP
.SH "Signature"
.PP
\fCint \fBkdbGet(KDB *handle, KeySet *returned, Key *parentKey)\fP\fP
.SH "Checklist"
.PP
.SS "Doxygen"
(bullet points are in order of appearance)
.PP
.IP "\(bu" 2
[ ] First line explains briefly what the function does 
.br
.IP "  \(bu" 4
[ ] 'Atomic operation to retrieve Keys from a KDB'
.PP

.IP "\(bu" 2
[ ] Simple example or snippet how to use the function 
.br
.IP "  \(bu" 4
[ ] add
.PP

.IP "\(bu" 2
[ ] Longer description of function containing common use cases 
.br
.IP "  \(bu" 4
[ ] explain in more detail which keys are included (\fC\fBkeyIsBelow()\fP\fP) 
.br

.IP "  \(bu" 4
[ ] move above description out of \fC@param\fP
.PP

.IP "\(bu" 2
[ ] Description of functions reads nicely 
.br
.IP "  \(bu" 4
[ ] remove indentation from first paragraph in Optimization
.PP

.IP "\(bu" 2
[ ] \fC@pre\fP 
.br
.IP "  \(bu" 4
[ ] move below description 
.br

.IP "  \(bu" 4
[ ] KeySet is not named \fCreturned\fP anymore
.PP

.IP "\(bu" 2
[ ] \fC@post\fP 
.br
.IP "  \(bu" 4
[ ] add
.PP

.IP "\(bu" 2
[ ] \fC@invariant\fP 
.br
.IP "  \(bu" 4
[ ] add
.PP

.IP "\(bu" 2
[x] \fC@param\fP for every parameter
.IP "\(bu" 2
[x] \fC@return\fP / \fC@retval\fP
.IP "\(bu" 2
[ ] \fC@since\fP 
.br
.IP "  \(bu" 4
[ ] add
.PP

.IP "\(bu" 2
[x] \fC@ingroup\fP
.IP "\(bu" 2
[ ] \fC@see\fP 
.br
.IP "  \(bu" 4
[ ] \fC\fBkeyIsBelow()\fP\fP for rules on parents / children
.PP

.PP
.SS "Naming"
.IP "\(bu" 2
[x] Abbreviations used in function names must be defined in the \fBGlossary\fP
.IP "\(bu" 2
[x] Function names should neither be too long, nor too short
.IP "\(bu" 2
[x] Function name should be clear and unambiguous
.IP "\(bu" 2
[ ] Abbreviations used in parameter names must be defined in the \fBGlossary\fP 
.br
.IP "  \(bu" 4
[ ] define \fCks\fP
.PP

.IP "\(bu" 2
[ ] Parameter names should neither be too long, nor too short 
.br
.IP "  \(bu" 4
[ ] \fCks\fP -> \fCkeySet\fP
.PP

.IP "\(bu" 2
[x] Parameter names should be clear and unambiguous
.PP
.SS "Compatibility"
(only in PRs)
.PP
.IP "\(bu" 2
\fBSymbol versioning\fP is correct for breaking changes
.IP "\(bu" 2
ABI/API changes are forward-compatible (breaking backwards-compatibility to add additional symbols is fine)
.PP
.SS "Parameter & Return Types"
.IP "\(bu" 2
Function parameters should use enum types instead of boolean types wherever sensible
.IP "\(bu" 2
[ ] Wherever possible, function parameters should be \fCconst\fP 
.br
.IP "  \(bu" 4
[ ] handle 
.br

.IP "  \(bu" 4
[ ] parentKey
.PP

.IP "\(bu" 2
[x] Wherever possible, return types should be \fCconst\fP
.IP "\(bu" 2
[x] Functions should have the least amount of parameters feasible
.PP
.SS "Structural Clarity"
.IP "\(bu" 2
[x] Functions should do exactly one thing
.IP "\(bu" 2
[x] Function name has the appropriate prefix
.IP "\(bu" 2
[x] Order of signatures in kdb\&.h\&.in is the same as Doxygen
.IP "\(bu" 2
[x] No functions with similar purpose exist
.PP
.SS "Memory Management"
.IP "\(bu" 2
[x] Memory Management should be handled by the function wherever possible
.PP
.SS "Extensibility"
.IP "\(bu" 2
[x] Function is easily extensible, e\&.g\&., with flags
.IP "\(bu" 2
[x] Documentation does not impose limits, that would hinder further extensions
.PP
.SS "Tests"
.IP "\(bu" 2
[ ] Function code is fully covered by tests 
.br
.IP "  \(bu" 4
[ ] Lines 1185:1188 
.br

.IP "  \(bu" 4
[ ] Lines 1218:1220 
.br

.IP "  \(bu" 4
[ ] Lines 1225:1227 
.br

.IP "  \(bu" 4
[ ] Lines 1262:1288 
.br

.IP "  \(bu" 4
[ ] Lines 1298:1310 
.br

.IP "  \(bu" 4
[ ] Lines 1345:1347 
.br

.IP "  \(bu" 4
[ ] Line 1205 
.br

.IP "  \(bu" 4
[ ] Line 1234 
.br

.IP "  \(bu" 4
[ ] Line 1368 
.br

.IP "  \(bu" 4
[ ] Line 1403 
.br

.IP "  \(bu" 4
[ ] add \fCkdbGet\fP specific tests
.PP

.IP "\(bu" 2
[ ] All possible error states are covered by tests 
.br
.IP "  \(bu" 4
[ ] parentKey namespace is \fCKEY_NS_META\fP 
.br

.IP "  \(bu" 4
[ ] parentKey namespace is \fCKEY_NS_NONE\fP 
.br

.IP "  \(bu" 4
[ ] \fCks == NULL\fP
.PP

.IP "\(bu" 2
All possible enum values are covered by tests
.IP "\(bu" 2
[x] No inconsistencies between tests and documentation
.PP
.SH "Summary"
.PP
.SH "Other Issues discovered (unrelated to function)"
.PP

