ForNeVeR / xaml-math

A collection of .NET libraries for rendering mathematical formulae using the LaTeX typesetting style, for the WPF and Avalonia XAML-based frameworks
MIT License
640 stars 102 forks source link

Better pattern matching #470

Closed Lehonti closed 1 year ago

Lehonti commented 1 year ago

Mostly to avoid casts, which are ugly, but it's also used in other ways

ForNeVeR commented 1 year ago

@Lehonti, hey! You seem to do a lot of work on refactorings of projects in the .NET ecosystem (thank you for that!), and the fork repository names look like they were created using some kind of tool. I am curious about this. Do you use some special refactoring automation tools that fork the repositories and perform some (semi-)automated refactorings for you?

Please do not take this as a criticism. I do appreciate your accurate and useful work!

Lehonti commented 1 year ago

Hi, @ForNeVeR, neither the fork names nor the branch names have been created using an automated tool. I think you are referring to the numbers at the end of many of them. I wrote those by hitting random keys on my keyboard's number pad; you know, to make extra sure that the names are actually unique :) (I know it's most likely unnecessary, but still).

I download the repositories and make the changes to the code manually. My refactoring tool is good ol' Visual Studio. The git branch names (improvement1, improvement2, improvement3, ...) are also created manually. I name them that way (as opposed to giving them more specific names) because I usually go hunting for bits of code to improve, but I don't know in advance what I'm going to find. What I can tell you is that I have a mental list of widespread programming anti-patterns, and an idea on how to refactor them away piece by piece (a "code algebra" of sorts), based on my experience as a programmer.

It would indeed be very cool to have a tool that automatically forks a GitHub repository, creates branches with improvements, and opens pull requests. Alas, I don't know of any such tool (if it exists, I would for sure love to know about it!). It would be a cool project to work on; but I don't think I have the time for that right now.

At the moment I'm trying to build the habit of making contributions to GitHub, and on most days I only have the time to do relatively small refactorings, so that's what I do in order to keep the habit alive, but I have been occasionally known to work on a real feature or two as well. Not to underestimate the importance of refactorings, though... I like to work with code where everything is super clear, and where I can immediately tell what the invariants are, which is why many of my refactorings are of that sort, so that the codebase is very habitable when I actually get to the part of working on a feature.