Büyük projelerde kodları ve projeyi düzenlemek için ne yapmalı?

MidI0ck

Kilopat
Katılım
21 Temmuz 2017
Mesajlar
1.579
Çözümler
14
Daha fazla  
Cinsiyet
Erkek
Önceden işler biraz daha kolaydı. Dolayısıyla basit birkaç not ile programın algoritmasını oluşturabiliyordum.

Ancak şu an daha komplike projeler yapmaya çalışıyorum ve sanki içinde kaybolup gidiyorum.

Kodları düzenlemek, projeyi düzenlemek için verebileceğiniz tavsiyeler var mı? Buna ek olarak kullandığınız toolları paylaşabilirsiniz çok mutlu olurum.
 
Önceden işler biraz daha kolaydı. Dolayısıyla basit birkaç not ile programın algoritmasını oluşturabiliyordum.

Ancak şu an daha komplike projeler yapmaya çalışıyorum ve sanki içinde kaybolup gidiyorum.

Kodları düzenlemek, projeyi düzenlemek için verebileceğiniz tavsiyeler var mı? Buna ek olarak kullandığınız toolları paylaşabilirsiniz çok mutlu olurum.

Her bir işi ayrı fonksiyonlara böl. Hatta ayrı dosyalara böl.
Yorum satırlarını ihmal etme.
GitHub kullan ve ağacını takip et, düzgün commitler ekle.

Mesela kodda text input işlevini baştan düzeltmek için sadece o dosyayı baştan yazman yeterli olsun. Bu şekilde kurgula.
 
Son düzenleme:
Aslinda mimarisi duzgun yapilan bir proje kac milyon satir koddan olusursa olussun neyin nereye yazilacagini bilirsin. Once oturup genel mimari bir plan cizmen gerek, paket/modul yapisi; sorumluluk ve hiyerarsi dagilimi, error handling, transaction management , unit/integration test vs. Guzel bir README de varsa development sureci gayet akici olur. Bu mimari yapiyi oturtmak zaten projenin ilk baslangicinda halledilmesi gereken bir sey.

Bu da biraz kullandigin teknolojilere ve paradigmaya gore degisir. F# ile functional bir sey yapiyorsan degisir, Java Spring ile AOP yapiyorsan degisir.

Bunlar net bir sekilde oturduktan sonra aslinda her yeni "feature" yeni class ,fonksiyon ve test yazmak demek.
Onlar da cok ilginc bir sey yapmiyorsa zaten self-explanatory olurlar, nereye yazilmasi gerektigi ve hangi conventionlari izlemesi gerektigi herkesce bilinir.
 
Önceden işler biraz daha kolaydı. Dolayısıyla basit birkaç not ile programın algoritmasını oluşturabiliyordum.

Ancak şu an daha komplike projeler yapmaya çalışıyorum ve sanki içinde kaybolup gidiyorum.

Kodları düzenlemek, projeyi düzenlemek için verebileceğiniz tavsiyeler var mı? Buna ek olarak kullandığınız toolları paylaşabilirsiniz çok mutlu olurum.
Ne tür proje yapıyorsunuz hocam?
 
Üniversitede bunun dersi var. Proje yönetimi adlı bir ders. Sistemin mimarisini önceden belirlemek üzerine detaylı bir ders. Henüz o kadar büyük bir projede çalışmadığımdan özel bir tool kullanmadım bunu yapmak için. Fakat en başından projeyi analiz eder, geliştirme planını belirler, ona uygun bir mimari geliştirirsin. Klasörler, dosyalar, sınıflar bir geliştirme prensibini takip ederler. Dolayısıyla bir şeyleri nereye ekleyeceğin konusunda çok kafa karışıklığı yaşamazsın.
 
Ne tür proje yapıyorsunuz hocam?
Şu an bir e ticaret sitesi için backend yazmaya çalışıyorum. Ancak ya bilgim eksik,ya doğru planlama yapmıyorum. Henüz kendi teşhisimi koyamadım açıkçası.
Üniversitede bunun dersi var. Proje yönetimi adlı bir ders. Sistemin mimarisini önceden belirlemek üzerine detaylı bir ders. Henüz o kadar büyük bir projede çalışmadığımdan özel bir tool kullanmadım bunu yapmak için. Fakat en başından projeyi analiz eder, geliştirme planını belirler, ona uygun bir mimari geliştirirsin. Klasörler, dosyalar, sınıflar bir geliştirme prensibini takip ederler. Dolayısıyla bir şeyleri nereye ekleyeceğin konusunda çok kafa karışıklığı yaşamazsın.
Hocam ben pek de iyi bir üniversitede okumuyorum öyle ifade edeyim. Zaten mühendislik de okumuyorum. Keşke okuyabilme imkanım olsaydı ancak tembel bir öğrenci olduğumdan kazanamadım. Belki yurt dışında yüksek lisans imkanım olursa CS varsa 2 yıllık böyle okuyabilirim. Açıkçası okulumdan çok da beklentim yoktu. A class üniversite kazanmadıktan sonra bence pek de önemi yok.

Aslinda mimarisi duzgun yapilan bir proje kac milyon satir koddan olusursa olussun neyin nereye yazilacagini bilirsin. Once oturup genel mimari bir plan cizmen gerek, paket/modul yapisi; sorumluluk ve hiyerarsi dagilimi, error handling, transaction management , unit/integration test vs. Guzel bir README de varsa development sureci gayet akici olur. Bu mimari yapiyi oturtmak zaten projenin ilk baslangicinda halledilmesi gereken bir sey.

Bu da biraz kullandigin teknolojilere ve paradigmaya gore degisir. F# ile functional bir sey yapiyorsan degisir, Java Spring ile AOP yapiyorsan degisir.

Bunlar net bir sekilde oturduktan sonra aslinda her yeni "feature" yeni class ,fonksiyon ve test yazmak demek.
Onlar da cok ilginc bir sey yapmiyorsa zaten self-explanatory olurlar, nereye yazilmasi gerektigi ve hangi conventionlari izlemesi gerektigi herkesce bilinir.
Dediğiniz hiçbir şeyi yapmadan. Kafama göre dümdüz yazıyorum desem hocam. E mail gönderecek bir modül varsa işte onu ayrı bir dosya yapıyorum. Şu ana kadar hiç oturup düzgün bir planlama yapmadım. O yüzden de adam akıllı sistemli hiçbir şey yapamıyorum. Sırf bu yüzden ilerde şirket hayatında,büyük projelerde çalışırken sorun yaşayacak gibi hissediyorum.
 
Şu an bir e ticaret sitesi için backend yazmaya çalışıyorum. Ancak ya bilgim eksik,ya doğru planlama yapmıyorum. Henüz kendi teşhisimi koyamadım açıkçası.
Projeleri düzenlemek ve kodları yönetmek için size şu önerilerde bulunabilirim:

1. Modüler Tasarım: Kodu mümkün olduğunca modüler ve bağımsız bileşenlere ayırın. Her modül belirli bir işlevi üstlenmeli ve modüller arası bağımlılıklar minimum düzeyde olmalıdır. Bu, kodun okunabilirliğini ve sürdürülebilirliğini artırır.

2. Kod Standartları: Projenizde kod yazım standartları belirleyin ve tüm ekip üyeleri tarafından uygulanmasını sağlayın. Bu, kodun tutarlı ve okunabilir olmasını sağlar.

3. Dosya ve Dizin Yapısı: Proje dosyalarınızı anlamlı şekilde gruplandırın. Örneğin, "src", "tests", "docs", "config" gibi ana klasörler oluşturun ve içlerinde ilgili alt klasörler/dosyalar bulundurun.

4. Kod Yorum ve Belgelendirme: Kodunuzu açıklayıcı yorumlarla destekleyin. Fonksiyon, sınıf ve modül seviyesinde açıklamalar ekleyin. Ayrıca, projenin genel belgelendirmesini hazırlayın.

5. Versiyon Kontrolü: Git gibi bir versiyon kontrol sistemi kullanın. Düzenli olarak commit'ler yapın ve geçmişe dönük değişiklikleri takip edin.

6. Otomatik Testler: Projenizde birim testleri, entegrasyon testleri ve uçtan uca testler yazın. Bu, değişikliklerin etkilerini daha kolay görebilmenizi sağlar.

7. Kod İnceleme: Ekip üyelerinin birbirlerinin kodlarını incelemesini sağlayın. Böylece, kodların kalitesi, okunabilirliği ve tutarlılığı artar.

8. Araçlar: Aşağıdaki araçları kullanmayı deneyebilirsiniz:
- Kod editörleri: Visual Studio Code, PyCharm, IntelliJ IDEA
- Versiyon kontrol: Git, GitHub, GitLab, Bitbucket
- Proje yönetimi: Jira, Trello, Asana
- Kod analizi: SonarQube, Code Climate, Codacy
- Otomatik Testler: JUnit, Pytest, Selenium

Bu öneriler, büyük ve karmaşık projelerin yönetiminde size yardımcı olacaktır. Adım adım uygulamaya çalışın ve ekibinizle birlikte kodun ve proje yönetiminin kalitesini artırın.
 
Hocam ben pek de iyi bir üniversitede okumuyorum öyle ifade edeyim. Zaten mühendislik de okumuyorum. Keşke okuyabilme imkanım olsaydı ancak tembel bir öğrenci olduğumdan kazanamadım. Belki yurt dışında yüksek lisans imkanım olursa CS varsa 2 yıllık böyle okuyabilirim. Açıkçası okulumdan çok da beklentim yoktu. A class üniversite kazanmadıktan sonra bence pek de önemi yok.
Benimde üniversitem pek iyi değil lise zamanımın tembelliğinden. Bunun pişmanlığı ağır oluyor ya. Ama hala mühendislik bölümünden çok şey öğrendim ben. Biraz da şanslıydım iyi bir hocayla karşılaştığım için. Üniversitem her ne kadar genel anlamda kötü olsa da, tek bir hocam sayesinde epey bir şey öğrendim. Emek harcarsan kendi okulunda da böyle bir şeyle karşılaşabilirsin belki.
 
Benimde üniversitem pek iyi değil lise zamanımın tembelliğinden. Bunun pişmanlığı ağır oluyor ya. Ama hala mühendislik bölümünden çok şey öğrendim ben. Biraz da şanslıydım iyi bir hocayla karşılaştığım için. Üniversitem her ne kadar genel anlamda kötü olsa da, tek bir hocam sayesinde epey bir şey öğrendim. Emek harcarsan kendi okulunda da böyle bir şeyle karşılaşabilirsin belki.
Hocam allah razı olsun güzel tavsiyeleriniz için inanın network kazanmak için zaten sadece derslere gidiyorum. Puanı ve sıralaması düşük olunca gelen öğrenciler de haliyle o kafada oluyor. Karı kız kovalayayım kafasında bomboş insan dolu,hocalar ayrı mesele zaten. Hocaya ben HTML anlatacağım o derece.

Dileyelim şans yüzüme gülsün,çabalamaya devam.
 
Dediğiniz hiçbir şeyi yapmadan. Kafama göre dümdüz yazıyorum desem hocam. E mail gönderecek bir modül varsa işte onu ayrı bir dosya yapıyorum. Şu ana kadar hiç oturup düzgün bir planlama yapmadım. O yüzden de adam akıllı sistemli hiçbir şey yapamıyorum. Sırf bu yüzden ilerde şirket hayatında,büyük projelerde çalışırken sorun yaşayacak gibi hissediyorum.

Bu konuyu acman bile bu durumun onemini anladigini gosterir, o da baslangic icin gayet yeterli. Kimse senden baslangica mimari bir sey beklemez, rahat ol.

Ayrica ise girdiginde bir modul olusturacagin zaman da bunun dokumantasyonu ya da izlemeniz gereken yolun zaten belirlenmis olmasi gerekiyor. Bu yoksa yine suc senin degil.

Biraz TDD yapmayi deneyebilirsin. Test edilmis, calisan fakat spagetti bir kodu zamanla refactor ederek gayet guzel hale sokabilirsin.
 

Geri
Yukarı