Posts

Showing posts with the label Open Source

Composition VS Inheritance in stack's implementation

Image
To prefer composition over inheritance was the choice of many people I happen to learn a lot from, In many cases, it sounded natural and made sense. With composition, you ensure single responsibility and loosely coupled components of your software. However, if we think that inheritance means "Is A" and composition means "Has A", It's very hard in many cases to say that a Doctor has a Person instead of saying a Doctor is a person, I tried but I couldn't do it. Anyway, I'm here for a different reason, I'm here to talk about an example when I had to choose between composition and inheritance and why did I favor one over the other. When I started using dart it originally had no stack implementation, I decided to create it ( Give it a look here ) and I would need to re-use the functionality of the list class in Dart. Inheritance way Let's see, can I say that a stack is a list? maybe, I wouldn't say that in an exam as well as on any other occasion ...

Why GitHub?

Image
In my Article: Why you should learn version control , I described why I think every developer should learn git and use a website similar to GitHub. I also provided some getting started material. In A Walk through GitHub Article , I described how people should Interact in GitHub. But why GitHub? What can I get from this community? Work with experts Your PRs are going to be reviewed by other experts who read books, took courses and got certified. They will leave comments for you, I work as a part-time mentor and I know how much students pay just to afford experienced mentors who will leave comments for them. Get some reputation In meetups, when people talk about how revolutionary is the Bitcoin, some people will happily announce that they are Bitcoin holders or miners. How many will announce with confidence that they are contributors? Can you imagine yourself in this situation?  The most revolutionary and famous open-source software products are...

A walk through GitHub

In this Article [link]  I described why I think every developer should learn git and GitHub. Many fresh graduates and juniors contacted me asking about guides on how they should deal with GitHub and how to interact. Here, I will walk through some live examples and show my opinion about how good developer should deal with the open source community. I'm assuming you know about git and GitHub. Opening issues. When you have a problem with a project, you submit a ticket (aka issue), you should clearly describe the issue and spend few seconds searching if it was reported before (If yes, go ahead and join the discussion). Opening a ticket can be for: Asking for a feature. Asking how to contribute (If you want and the README file doesn't have enough information). Reporting a bug. Complaining about the leak of documentation. Complaining about the absence of some code quality tools. This list isn't final and I'll add more if I got suggestions. gener...

Why you should learn version control

I usually Suggest my followers on social media accounts to learn some techniques to improve their code readability. One day I found a lot of students think that git or any version control software is not useful, what a surprise for me!! What is version control? According to Wikipedia, A component of software configuration management,  version control , also known as  revision control  or  source control , is the management of changes to documents, computer programs, large web sites, and other collections of information. So normally version control is the process of keeping track of code changes along the time. What is git? According to Wikipedia, Git  (/ɡɪt/) is a version control system (VCS) that is used for software development and other version control tasks. As a distributed revision control system it is aimed at speed, data integrity, and support for distributed, non-linear workflows. Okay, git is just a software and we can't ...