Evet, bilinen uygulamalardan ziyade arabirimlere karşı kodlama yapmalısınız ve evet, arabirimleri kendi kodunuzdan çıkma yerine ilk olarak oluşturmalısınız.
Her iki tavsiyenin nedenleri büyük ölçüde aynıdır: bilgisayar programlama büyük ölçüde insan faktörleri ile ilgilidir. Birçoğu bunu şaşırtıcı buluyor, ancak düşünün: Aynı bilgi işlem problemini eşit derecede iyi çalışan çözmek için neredeyse sonsuz sayıda farklı yol var. Neredeyse hepsini yazmayanlar (ya da kısa bir süre sonra yazara) anlamamak tamamen imkansızdır.
İyi yazılım mühendisliğinin, kaynak kodun daha sonra üzerinde çalışılmasına izin verecek şekilde istenen etkiyi (makul verimlilikle doğru hesaplama) nasıl elde edeceği ile ilgilidir. Arayüzler ve API'lar bu disiplinin önemli bir parçasıdır: bir problemi aynı anda tek bir tanım düzeyinde düşünmenize izin verir. Bu, iş tutarlılığı kuralları ve aynı zamanda bağlantılı liste uygulamaları hakkında düşünmekten çok daha kolaydır ve bu nedenle endişelerin bu şekilde ayrılmasını zorla uygulamak , istemci programcının kodunuzu istediği gibi kullanmasına izin vermekten daha iyidir.
Bu, yazdıkları her şeyi anladıklarına ikna olan birçok kovboy programcıya inanmak zor, ortalama düşünürlerden çok daha iyi ve "daha az" programcılara sorun veren tüm karmaşıklığı kaldırabiliyor. Kişinin kendi bilişsel sınırlarının farkında olmamak son derece yaygın bir olgudur - bu yüzden kod organizasyonundaki en iyi uygulamalar bu kadar büyük önem taşır (ve çoğu zaman göz ardı edilir).
Tekrarlamak gerekirse, arayüzler ve API engelleri, yalnızca kendinizle işbirliği yaptığınızda bile büyük ölçüde iyidir . Dış kütüphanelere gelince, eğer onlarla iyi düşünülmüş bir API getiriyorlarsa, o kütüphaneyi başka bir kütüphane için değiştirmeyi beklemediğiniz sürece kullandığımda hiçbir sorun görmüyorum. Aksi takdirde, bir sargı veya yolsuzlukla mücadele katmanı çok iyi bir fikir olabilir.