Clean Code: Bölüm 1

Muhammed Unal
lTunes Tribe
Published in
5 min readJan 21, 2023

Writing clean code is what you must do in order to call yourself a professional.There is no reasonable excuse for doing anything less than your best.

Photo by James Harrison on Unsplash

Her yazılımcının mutlaka okuması ve benimsemesi gereken kitaplardan biri de Robert C. Martin’in yazdığı “Clean Code: A Handbook of Agile Software Craftsmanship” kitabıdır. Bu yazımda kitabın ilk bölümü olan “Clean Code” kısmına yer vermek istedim.

“You are reading this book for two reasons. First, you are a programmer. Second, you want to be a better programmer. Good. We need better programmers.”

Bu bölümde “Clean Code” kavramının ne olduğunu ve ne olmadığını, neden önemli olduğunu anlatır. Kitabın okuyan yazılımcıya neler katmayı amaçladığını anlatan bu bölümde ayrıca usta isimlerin, tabiri caizse bu işin kitabını yazmış isimlerin, Clean Code hakkında ki görüşlerine de yer verilmiştir.

Şimdi bu kısmı biraz daha detaylı inceleyelim.

They are hoping that one day we will discover a way to create machines that can do what we want rather than what we say. These machines will have to be able to understand us so well that they can translate vaguely specified needs into perfectly executing programs that precisely meet those needs.
This will never happen. Not even humans, with all their intuition and creativity,have been able to create successful systems from the vague feelings of their customers.

Son zamanlarda ChatGPT ile gündeme gelen, makinaların yani yapay zekaların insanların işini elinden alabilir mi sorusuna, en azından biz yazılımcılar için açıklık getirmiş ve yukarıda ki alıntıda da gördüğünüz gibi oldukça mantıklı argümanlar öne sürmüştür.

LeBlanc’s law: Later equals never.

İşi zamanında yetiştirebilmek için daha sonra düzeltirim diyerek birçok kez temiz kod kavramına aykırı, bazı prensipleri ihlal eden kodlar yazmışızdır ve büyük bir kısmına tekrar bakma fırsatı bulamamışızdır. Robert C. Martin ise bu konuyla ilgili nasıl ürün sahipleri/müşteriler takvime uygun ilerlemeyi savunuyorsa, bizim de aynı tutkuyla kodu savunmamız gerektiğini belirtiyor.

Writing clean code requires the disciplined use of a myriad little techniques applied through a painstakingly acquired sense of “cleanliness.”This “code-sense” is the key.

Bad code tries to do too much, it has muddled intent and ambiguity of purpose. Clean code is focused.

Kötü kodu tanımlarken, çok fazla şey yapmaya çalıştığını ve tek bir amaca hizmet etmediği için “amaç belirsizliği” taşıdığını belirtmiş. Temiz kodun ise çok sayıda küçük tekniğin disiplinli bir şekilde kullanılması ile sağlanacağını dile getirmiş. SOLID prensiplerinin önemini de bir kez daha anlamış olduk.
Burada üzerine düşünmemiz gereken bir başka kavram ise “code-sense”. Bu algının bazılarımızda doğuştan olduğunu, bazılarımızda ise sonradan çalışarak elde edebileceğimiz bir özellik olduğunu söylemiş ve bu özellik sayesinde bir kodun iyi ya da kötü olduğunu anlamayı sağlayacağını, hatta kötü kodu nasıl iyi bir koda dönüştürüleceği konusunda da yol gösterebileceğini belirtmiştir. “

Temiz kod yazan bir yazılımcı, zarif bir şekilde kodlanmış bir sistem olana kadar boş bir ekranı bir dizi dönüşümden geçirebilen bir sanatçıdır açıklaması ile de temiz kod yazan yazılımcının gözündeki değerini göstermiştir.

“Clean Code: A Handbook of Agile Software Craftsmanship”

Başlangıçta temiz olarak yazılmayan projelerde, verimlilik zamanla sıfıra kadar düşeceğini, bir çıkmaza girileceğini belirtmiştir. Bunun ayrıca hem projeye sonradan dahil olan yazılımcılar için, hem de projenin başından itibaren bulunan yazılımcılar için, hata çözümünde veya yeni bir özellik geliştirme aşamasında çok fazla yavaşlatacağını ve bunun gibi birçok dezavantaja sebep olacağını da eklemiştir. Kitapta da belirttiği gibi, eğer 2–3 yıllık bir tecrübeye sahipseniz çok büyük bir ihtimalle bununla karşılaşmışsınızdır. Tabi bunlara ek olarak, projede çıkılmaz bir noktaya gelinebileceğini, bununla beraber yeniden yazmak için ek kaynak ihtiyacı, var olan projenin bakımı için yine kaynak ihtiyacı ve uzun bir süre gerektireceğini de belirtmiş ki bunlar bildiğiniz gibi oldukça maliyetli işlerdir.

“Clean Code” kavramı hakkında çok iyi bilinen ve çok deneyimli programcıların ne düşündüklerine de kitapta yer verilmiştir. Bunlardan birkaçını da yorum katmadan olduğu gibi ekliyorum ve yorumlamayı size bırakıyorum.

Bjarne Stroustrup,
inventor of C++ and author of The C++ Programming Language

I like my code to be elegant and efficient. The logic should be straightforward to make it hard for bugs to hide, the dependencies minimal to ease maintenance, error handling complete according to an articulated strategy, and performance close to optimal so as not to tempt people to make the code messy with unprincipled optimizations. Clean code does one thing well.

Grady Booch,
author of Object Oriented Analysis and Design with Applications.

Clean code is simple and direct. Clean code reads like well-written prose. Clean code never obscures the designer’s intent but rather is full of crisp abstractions and straightforward lines of control.

Michael Feathers,
author of Working Effectively with Legacy Code.

I could list all of the qualities that I notice in clean code, but there is one overarching quality that leads to all of them. Clean code always looks like it was written by someone who cares. There is nothing obvious that you can do to make it better. All of those things were thought about by the code’s author, and if you try to imagine improvements, you’re led back to where you are, sitting in appreciation of the code someone left for you — code left by someone who cares deeply about the craft.

Ron Jeffries,
author of Extreme Programming Installed and Extreme Programming Adventures in C#

In recent years I begin, and nearly end, with Beck’s rules of simple code. In priority order, simple code:
• Runs all the tests;
• Contains no duplication;
• Expresses all the design ideas that are in the system;
• Minimizes the number of entities such as classes, methods, functions, and the like.

Son olarak Bob amcanın Clean Code’u nasıl açıkladığına da bakalım;

Robert C. Martin
What about me (Uncle Bob)? What do I think clean code is? This book will tell you, in hideous detail, what I and my compatriots think about clean code. We will tell you what we think makes a clean variable name, a clean function, a clean class, etc. We will present these opinions as absolutes, and we will not apologize for our stridence. To us, at this point in our careers, they are absolutes. They are our school of thought about clean code.

Tabii ki açıklaması bu kadar kısa değil, kalan kısmına kitaptan bakmanızı tavsiye ederim :). Bu yazımda ilk bölümden altını çizdiğim, kendime not olarak aldığım kısımları sizinle de paylaşmak istedim.

Bu makaleyi sadece ilk bölüme ayırmak istedim çünkü bir şeylerin nasıl yapıldığını bilmek kadar, bildiğimizi ne kadar uyguladığımız da çok önemlidir. Yani demek istediğim temiz kod yazmayı bilmek yetmez, bunu benimsemek, olabildiğince taviz vermemek de gerekir. Bir insan gömleğinin düğmelerini yanlış iliklediğinde nasıl onu düzeltmeden dışarı çıkmıyorsa, biz yazılımcılar da kodumuza Clean Code disiplinlerini uygulamadan işimizi bitirmemeye özen göstermeliyiz. Tabii bu hemen kazanılabilecek bir alışkanlık değil, bunun için Bob amcanın deyimiyle savaşmamız gerekecek.

Okuduğunuz için teşekkür ederim, sonraki yazımda görüşmek üzere :)

Sağlıcakla kalın…

Photo by Hanny Naibaho on Unsplash

--

--