Specification 1.0 for Java. Last updated 2017-03-20 17:14
Specification under revision. Provisional.
MT Notation is very different from Java and PHP. However they keep the same logic.
It is based on old Hungarian notation and before judging it think that some of the best Engineers I know use it. Some in Facebook. Specially for C, C++ and Python.
In loving memory of Emilio. A very nice guy and a really clever C++ developer. Much clever than me.
The idea behind the MT Notation is to help solve bugs quickly. Many would think that the notation is not necessary cause modern IDEs have error syntax, and Java have strong typing.
That’s the theory. Now look at a real case. Imagine that you’re working with currencies and somewhere you loss the floating precision.
You can waste hours debugging, sometimes that’s not easy, specially on web.
Now imagine that your variable looks like:
IntegerCurrency
With a single eye-sight you would catch where the problem is.
Or imagine that you variables like:
ArrayOfIntegersAmounts
That would greatly help identifying each type when debugging.
Well, the MT Notation helps with that, in a much more discrete way. :)
General Optional Prefixes
Optionally you can use the prefix p for class properties, so widely visible across the class.
You can use l for local variables, v for variables passed via value. Objects that are referenced (even if Java passes the reference via value) do not have the v prefix, to differentiate from those that can locally safely overwritten.
Variable Type Prefixes
Prefix | Type | Description |
---|---|---|
b | Boolean | For the Boolean type. bSuccess |
c | Char | For the Char type. cLetter |
d | Double | For the Double type. dAmount |
f | Float | For the Float type. fValue |
i | Integer | For the Integer type. iAmount |
o | Object | For the any Object. oCar |
r | Short | For the Short type. rAmount |
s | String | For the String type. sName |
y | Byte | For the Byte type. yValue |
Structures Type Prefixes
It goes in front of the variable type.
So, for instances aiAmount is an Array of Integers.
Prefix | Type | Description |
---|---|---|
a | Array | For the Array. Array of Integers. aiAmounts |
h | HashMap | For the HashMap. hsKeys |
l | ArrayList | For the ArrayList. asNames |
Again, if you expect to have an Array, and you have an ArrayList, you will quickly identify the problem in your code. Also you will know which data structures are behind the code so is easy to improve the code or reduce the memory use.
Rules for writing a Comment