Design relates to the overall structure and organization of your program. Good design is impossible to define briefly but fortunately, it is easy to recognize. Books can and have been written to try to answer the question, what constitutes good design. Any good book on software engineering, such as the one by Sommerville, will present the principles of good design. Good design is simple design .
Poor designs are almost always overly complex.
When you find your code becoming complex, it's a good time to rethink your entire approach. You may believe that you don't have time to rethink the problem, but usually replacing a bad design takes less time than trying to get it to work. We call things we don't understand complex, but that means we haven't found a good way of thinking about them. Programs are read by humans, not just by computers. These qualities refers to how easy it is for someone to understand your program and possibly to change it.