Skip to content

How to Prepare for Refactoring in Python?

4 pointsmatjazdrolc2 comments
On HN

Refactoring is inevitable in any sufficiently complex piece of software.

Type system in Java, C++ or C# helps the process immensely. Automated tooling can do most of the heavy lifting there.

In Python type hints are optional. Additionally, many libraries are written such that typing is hard (example: Flask's g object, or SQLAlchemy's models).

How to anticipate refactoring in Python and write code that is easy to refactor?

Things that worked well so far:

- verbose names. Longer variable or function name is less likely to collide with others within a project. Helps to quickly find all places in the project where the variable or function is used.

- ending variable names with _type. Example: `current_user`. Searching for `user.last_login_date` will surface `current_user.last_login_date` too.

Comments

Automated tests.

The books by Harry Percival on this are good.

https://www.obeythetestinggoat.com/

Big fan of the two you mentioned. A couple more to add would be:

- Use black to format your code. No exceptions.

- Very modular code.

- Tests, although this costs time of course. Focus on meaningful rather than trivial ones if needed.

- Write comments explaining reasoning for particularly dense pieces of logic.

If you practice most of the above, hard to see where you can go wrong.

AboutSource Built by g1lg1l

Hackerly is an independent reader for Hacker News, built on the public HN API. Not affiliated with Y Combinator.