DEV Community

Metro Telekom
Metro Telekom

Posted on

Programlamayı eğlenceli ve deneysel tutmak için kuralları yıkmak

Muhtemelen iş yerinde süreçleriniz vardır. Kodunuzu yazmak için stil kılavuzları. Her bir işlevsellik parçasını doğrulayan birim testleri ve entegrasyon testleri. Binlerce taahhüt geçmişi üzerinden projede oluşturulan en iyi uygulamalar. Şirketinizde ve genel olarak programlama topluluğu tarafından oluşturulan kutsal kurallar. Ve bu kurallara uymak, potansiyel olarak binlerce veya milyonlarca kullanıcı tarafından kullanılan bir ürün için önemlidir.

Ancak bazen, kişisel projelerinizde kuralları bir kenara atmayı denemelisiniz. Sadece onları dışarı atın ve oynayın! Böyle bir örnek, blogumun arkasındaki koddur. Herhangi bir çerçeve olmadan PHP ile yazılmıştır. Bu, onu bir arada tutan bir dizi yeniden yazma kuralına sahip gevşek PHP dosyalarının gevşek bir koleksiyonudur. Temelde Jekyll'in cilalanmamış bir versiyonu gibi.

Klasör yapısının kullanımı şöyle görünür:

publicKlasör açığa çıkan şeydir. Klasör , psMarkdown'da frontmatter ile yazılmış tüm yazılarımı içerir. Klasör , libgönderileri yüklemekten sorumlu sınıfı tutar.

Gibi bir URL dahili https://www.karelteknikservisi.com/posts/jinx olarak https://www.karelteknikservisi.com/blog .php?slug=jinx. Daha sonra, slug'a göre dosyaları doğru olanla eşleştirmek için ararım. Gönderi tarihini başlıktan ayrıştırıyorum. Bunların hepsi bir Post sınıfında olur. Bundan önce kod, bazı pis karışık HTML ile birlikte doğrudan blog.php'deydi.

İşte böyle görünüyordu

`blog
├── bootstrap.php
├── composer.json
├── composer.lock
├── lib
│   └── Post.php
├── ps
│   ├── 2019-01-02-coloring-terminal-text.md
│   ├── 2019-01-03-non-obvious-behaviors.md
│   ├── 2019-01-04-command-line-flags.md
│   ├── 2019-01-05-bringing-your-entire-infrastructure-down.md
│   ├── 2019-01-07-jinx.md
│   ├── 2019-01-09-how-i-got-into-freelancing.md
│   ├── 2019-01-12-mentoring-junior-team-members.md
│   ├── 2019-01-14-building-responsive-email-with-mjml.md
│   └── 2019-01-15-breaking-the-rules.md
├── public
│   ├── assets/ (images etc.)
│   ├── blog.php
│   └── index.php
├── vendor/ (dependencies)
└── views
    ├── base.mustache
    ├── blog.mustache
    ├── listing.mustache
    └── partials
        ├── about-me.mustache
        ├── description.mustache
        ├── header.mustache
        ├── newsletter-form.mustache
        └── title.mustache`
Enter fullscreen mode Exit fullscreen mode

Image description

Çirkin kod mu? İnanılmaz derecede öyle. Yazmak eğlenceli miydi? Emin ol! Tüm blog sistemi, işe geri dönmeden önce bir Pazar günü bir veya iki saat içinde çalışıyordu. Güzel olmasını istemedim, sadece orada olsun istedim. Ve ne zaman bazı kodlar bakmak için dayanılmaz hale gelirse, bazı seçici yeniden düzenleme gerçekleşir.

Ve bu şeyi hacklemeyi seviyorum. Bazı kodlar alıyorum, sunucuma yüklüyorum ve bir gün diyorum. Çılgınca çalışan bazı küreseller var, kod çoğaltma var, bir kod incelemesi sırasında bağıracağım her türden şey var. Ama hiç kimse benim küçük blogumun kodunu görmeyecek, bu yüzden bunu yapmakta kesinlikle sorun yok. Bu benim küçük dağınık oyun alanım. Eklemeye devam ediyorum ve neyin yapıştığını görüyorum.

Öyleyse, The Next Big Thing™ olması amaçlanmayan kendi küçük bir projeniz üzerinde çalışıyorsanız, neden tüm gücünüzü harcayıp duvara renk atıyormuş gibi kod yazmıyorsunuz? İnanılmaz derecede terapötik, sana söylüyorum!

İşte gün ışığını görmemiş bir projeden bir örnek

require_once('../../server/bootstrap.php');

use Respect\Validation\Validator;
use Carbon\Carbon;

$database = getDatabaseConnection();
$emailValidator = Validator::email();

if (!isset($request->email) || !$emailValidator->validate($request->email)) {
    sendResponse([
        'error' => true,
        'errors' => [
            'Please provide a valid email for logging in.'
        ],
        'errorFields' => [
            'email'
        ]
    ], 400);
}

Enter fullscreen mode Exit fullscreen mode

Bunların hiçbirinde standardizasyon yok. İşlev sendResponse, yalnızca birkaç başlık gönderen, diziyi JSON'a seri hale getiren ve hepsini yankılayan küçük bir sarmalayıcıydı. çirkinliğiyle $requestgüzeldir .STDINjson_decode

Feragatname

Bu, sanki soyut bir sanatçıymışsınız gibi üretim kodu yazmanız ve iş yerindeki tüm kuralları ve gelenekleri göz ardı etmeniz gerektiğini düşündüğüm anlamına gelmiyor. Bu sözleşmelerin genellikle arkasında iyi sebepler vardır. Ancak, kendi zevkiniz için programlıyorsanız, daha yaratıcı ve deneysel olmanın yardımcı olduğunu düşünüyorum. Sert yapılardan kurtulmak için. Kim bilir, belki gerçekten hoşunuza giden ve geliştirebileceğiniz bir şey bulursunuz.

Bu yazı ilk olarak kişisel karel servis blogumda yayınlandı.

Keyfini çıkarın!

Top comments (0)