Aaron Leonard https://risingthumb.xyz
Design and Style philosophies
Here I cover design and style philosophies I follow for my software and works. Listed by Hexadecimal number. Email me if you have any questions on any.
- 0x0000 : All content within the website must be accessible within a maximum of 2 link clicks.
- 0x0001 : All links should be obvious on where they to go to.
- 0x0002 : Monospace fonts have a time and place. As a technical website I strictly use Monospace fonts.
- 0x0003 : All textual content in a website should render in a terminal browser.
- 0x0005 : As a British Website, the Website should conform to the standard reading format, top-to-bottom and left-to-right.
- 0x0006 : Multimedia content increases load times, and should be avoided most of the time.
- 0x0007 : I dislike comments. They serve a person's ego, are commonly rude and often(especially in the advent of Social Media) add little value
- 0x0008 : I like when the Author's name and the Author's contact information is easily found
- 0x0100 : For my projects I do not necessarily follow idiomatic style or language style guides.
- 0x0101 : PascalCase is used for class names, enums
- 0x0102 : flatcase is used for local variables.
- 0x0103 : camelCase is used for member variables, and dictionary/mapping keys.
- 0x0104 : upper flat case is used for Global Variables, constant variables, enum variables.
- 0x0105 : camelCase is used for methods. snake_case is used for functions. In languages with a close connection between function and method such as Python, I may accidentally use the wrong one. If you spot this, raise an issue or correct it .
- 0x0106 : For collaborative projects, refer to that project's style guide and follow it exactly. If a certain part of it is undefined or ambiguous, decide what is best. An idiomatic style will usually be the best, as it is what training supports by education standard.
- 0x0107 : Idiomatic style is a silly thing to wage a holy war on. The highest order of business is simplicity, THEN readability, in that order. A simple system begets readability. For certain points, I will agree on idiomatic style, for unique languages such as COBOL and LISP-like languages.
- 0x0200 : Effective programming is a good combinations of procedures, and data structures.
- 0x0201 : Of the procedures, you have functions that return nothing and perform actions on state. It is worth avoiding these for any system that will need heavy testing or unit testing.
- 0x0202 : Of the procedures, you have functions that return something and perform actions on state. What it should return should be relevant to the state change. Often in C Programming Language and it's derivatives, this will be an error code. In HTTP Requests this is a status code. Makes your functions return relevant information.
- 0x0203 : Of the procedures, you have functions that return something and do nothing to the state. What it should return, should be obvious based on the name of that function.
- 0x0204 : Continuing, a developer must not be afraid of passing functions, function references, or data structures into Functions, nor returning these.
- 0x0205 : Of the data structures you have many. You should consider how data is going to be accessed and used. Of note is Arrays and Maps for O(1)(Effectively most of the time. This can change in extreme circumstances, such as excessively large arrays loaded into RAM which is the signature of an untrained developer. Maps will not be O(1) in terrible circumstances).
- 0x0206 : Of data structures remember that Objects are effectively just structs(from C) with methods tied to them. The extra abstractions such as interface, abstract and inheritance is the source of overdesigning a problem, as well as many complexity problems. The inheritance diamond of death is one such example to consider. As such, when you use these, make sure you're aware why you're using these, and consider if composition is actually a better way. In many cases, composition is a better solution.
- 0x0207 : Any programmer worth their salt should be aware of the various Design patterns available. Most are good in their respective situations and by a competent developer. One in particular is the source of much sorrow. The singleton. Unchecked abuse of this, results in it effectively becoming a namespace for Global variables. This makes it hard to test with side-effects and many interactions with it. Similar problems can be found in other design patterns where they cause unchecked difficulties due to their abuse.
- 0x0208 : A willingness to learn, and to experiment. None of what I have said for Programming is gospel. The only reason I know of Singleton problems is because I have used them in that poor of a manner before. The only reason I have these distinctions for my procedures, is because of issues from other distinctions I have made. An amateur programmer only knows the rules of Chess. They do not know the theory and literature behind common openings and patterns. In a similar way a programmer must learn.
- 0x0300 : Keep it brief. Don't waste a viewer's time. The only exception to this, is if you try to meet arbitrary requirements of platforms like YouTube, which is a poor choice due to the massive recency bias in YouTube.
- 0x0301 : Provide subtitles. As a deaf person relying on hearing aids, a lack of subtitles is distinctly disappointing. Some content is rendered inacessible in its absence. This can be done in the Video Editing or in simply providing the files or creating the subtitles on your platform of choice.
- 0x0302 : Your font should match well with the content.
- 0x0303 : Especially for Tutorials, DO NOT waste a viewer's time. This will let them get on with learning quickly and rapidly.
- 0x0400 : Provide an example usecase in code.
- 0x0401 : Describe in detail all the different parameters/flags.
- 0x0402 : Describe in detail the range of and expected outputs.
- 0x0403 : Link to related and similar documented items.
Add me to your RSS feed readers with the below