"# check if frame is None" is indeed a good example of comments you should not write. It's weird that someone has the skill to create what seems such a complete lib and yet produces what most would qualify as a beginner structure.
If the project holds up, it's definitely a teaching moment for me.
I noticed reading some of the comments here that they don't get into what a "good" comment is. Many critiques on HN will try to identify best practices, but with comments, and writing generally, it's more a skill you have to learn.
The weirdness you mention can be explained, I think, by the fact that the project has a single contributor.[1]
A person learns which patterns work or not when patterns clearly work or fail. Since bad comments are something that affects maintenance without breaking the code, it wouldn't be surprising if the internals are solid while the code is less maintainable.
And I predict that if it takes off, you'd see other contributors pushing back against the extraneous comments, and Abhishek's style in commenting evolve.
I really dislike how OpenCV handles reading frames from a video file, leaving up to the developer the responsibility of checking if it's None or not (or the status) -- the whole thing feels wrong in Python.
It's actually super simple to write a wrapper around it that lets you do:
for frame in video:
# your processing comes here and you forget
# having to check for None, while True s and things
# that should've stayed in the stone age
And I'm a little disappointed the posted library doesn't do it.
while (frame_stab := stream_stab.read()) and (stream_org := stream_org.read()):
iter() works with all stable versions of Python though, but it's a bit exotic. When I use it, I tend to make aliases to make it clearer because most Python devs don't know about it, let alone this alternative form.
stab_frames = iter(stream_stab.read, None)
org_frames = iter(stream_org.read, None)
for frame_stab, frame_org in zip(stab_frames, org_frames):
Thanks for suggesting this, I'm always open to good suggestions. The reason behind comments like this is that I thought it would a good thing to explain the code as a newbie's perspective, after all, my primary goal was to make this library approachable to all audiences, especially someone who doesn't know how to program very well. Being said that I'll soon fix these redundant comments.
12 comments
[ 3.7 ms ] story [ 29.3 ms ] threadIf the project holds up, it's definitely a teaching moment for me.
The weirdness you mention can be explained, I think, by the fact that the project has a single contributor.[1]
A person learns which patterns work or not when patterns clearly work or fail. Since bad comments are something that affects maintenance without breaking the code, it wouldn't be surprising if the internals are solid while the code is less maintainable.
And I predict that if it takes off, you'd see other contributors pushing back against the extraneous comments, and Abhishek's style in commenting evolve.
[1]: https://github.com/abhiTronix/vidgear/graphs/contributors
It's actually super simple to write a wrapper around it that lets you do:
And I'm a little disappointed the posted library doesn't do it.[1]: https://github.com/abhiTronix/vidgear/issues/new/choose