Programı geliştirmeye korkuyorum

Başlatan Zoroaster, 08 Ocak 2017, 15:02:19

muhittin_kaplan


boreas

program yazma standartları var degişken nasıl tanımlanır prosedur baslıkları nasıl olmalı bu standartlara uyunca ileriye donuk kod karmaşası azalıyor. Dunit gibi test kitaplıkları var ama sahsen  bunları hiç kullanmadım. sadece prf. olarak yazanların kullandıgını bılıyorum. sızın kı gb projelerde ıse moduler yapmak en ıyısı. hatta bır addon mantıgıyla bıle yapılabılır. ana yazılım motor gorevı gorur eklentıler eklenerek yazılım gelısır

mert3162

En sıkıntı çektiğim konulardan biriydi bende class yapısını kullanıyorum.Ayrıca belli fonksiyonları bir araya toplayıp yapılması gereken prosedürleri bir standart haline getirdim ayrıca tanımlamalar çok çok önemli bazen bir önceki gün yazdığım kodu bile hatırlayamayabiliyorum ben bunu niye yazmışım diye.

Benim merak ettiğim konulardan biride Bilgisayar programcılığı yada Bilgisayar mühendisliği okuyan arkadaşlara bu eğitimler veriliyormu yazdığınız kodu dökümante etmek stabil kod yazmak ile ilgili eğer böyle bir ders veriliyorsa dersin adını merak ettim.Kurumsal seviyede bu tarz eğitim veren yerler biliyorsanız söylerseniz faydalanmaya çalışalım(Çalıştığım şirketin eğitim bütçesi var belki böyle bir konu ile değerlendirebiliriz.)
|^^^^^^^^^^^^\ ||\
|__PICPROJE.ORG __
||'""|""\___
| _____________ l | |__|__|___| )
(@!)!(@)"""""**|(@) (@)****|(@)---------

 Üstadlarım nonstradam & Logan

OG

FORUMU İLGİLENDİREN KONULARA ÖM İLE CEVAP VERİLMEZ.

ISS

- object oriented analysis & design
- yazılım geliştirme metodolojileri
- 'clean code'
- 'documentation'
- yazılım mühendisliği ilkeleri
- veri yapıları - algoritmalar
- yazlım analizi
- tasarım desenleri

yukarda birkaç tane anahtar yöntem söyledim. bunları araştırın gerekirse kitap alın youtube video izleyin. zamanla gelişirsiniz.
tabi zamanla hepsini öğrenmek gerek. tek bir tanesi her sorunu çözmez.

Zoroaster

#20
Alıntı yapılan: boreas - 10 Ocak 2017, 18:20:41
Anladığım kadarıyla esas sorun diğer konu başlığınızda ki büyük programların geliştirilmesiyle ilgili. Bu bir yapı işinize yarayadabilir yaramayadabilir. Sizin durumda öncelik programın nasıl bir yapısı olduğu nasıl büyüdüğü ? Şöyleki bir yazılım yaparsınız hesap makinesi, not defteri vs. gibi programlar eklendikçe yazılım büyür başka bir yazılım yaparsınız misal simülasyon yazılımı motor kısmı sabit kalır simüle edilecek entegreler eklendikçe yazılım büyür. Bu iki büyüme şekli birbirinden farklıdır. Bu yüzden doğru karar için programın özelliklerini detaylı bilmek gerekir.

Hocam 2 tipte de büyüyor.

Mesela ilk duruma örnek olarak;

Timer, ADC, USART gibi çevre birimlerinin kullanımı ile ilgili kodları sırası geldikçe programa ilave ediyorum. Mesela SPI ile ilgili kodları yazdım. Timer ile ilgili kodları yazılmasına neden olacak seçenek şu anda aktif değil.

İkinci duruma örnek olarak;

Şu anki programım sadece STM32F103C8 için geçerli. Mesela bu programa bir ikinci çipi eklemek istersem işler çok karışır. Bu durumu programa başlarken hiç öngörmediğim için mevcut yazılımı yeni baştan yazmam gerekir.

48 bacaklı çipi Delphinin mevcut panel komponentleri ile tasarım aşamasında çizdim. Yeni ekleyeceğim çip 48 değil 64 bacaklı olabilir. En basitinden çipin çizimini tasarım aşamasında değil run aşamasında koda yaptırmam gerekir.

Çipin bacak sayısının değişmiş olması ana çatıyı da değiştirmemi gerektirir.
Seytan deliginden kacti.

boreas

@Zoroaster  işte oop tam olarak burada devreye giriyor.  Esasen sizin programınız sadece timer - adc - spi olarak büyümesi gerekir. Diğer entegreler temelde hepsi aynı bacak sayıları değişir, bacakların yapıları değişir ve bazı kısıtlamalar olabilir.
Bu programı şöyle tasarlamalısınız her entegre bir dosyadan oluşacak kaç bacağının olduğu ve bacakların adc mi , vdd mi ne özellikte olduğunu yazan bir text dosyası olarak sisteme eklenecek belki bir metin olarakda sınırlamalar ya da kurallar eklenecek.
Delphi bu metni açtığında bakacak 48 bacak var size bir panel oluşturacak 4 tarafına 12 bacak yerleştirecek bacakların özelliklerinide yine textten alacak. 64 oldğunda yine aynı şekil.
Bunun içinde sizin entegre sınıfını tanımlamanız bundan da önce bacak yapısını tanımlamanız gerekir.
misal
class Tbacak
pin:tpanel;
ozellik:array of string;
end ;

class entegre
isim:string;
bacak_sayisi:integer;
bacaklar: array of tbacak;
end;

gibi .
sistemi böyle kurduğunuzda entegreler çalışma anında oluşur programlamanız kolaylaşır ve hata oranınız düşer. Tekrarlı işlemler için tek tek kod yazmasınız. 100'lerce işlemcide olsa program canavar gibi çalışır.

OOP.nin amacıda tam olarak budur.

Zoroaster

Delphide class tanımı yaparak hiç kod yazmamıştım.

Record tanımına benziyor ve programımda bolca Record tanımlı değişkenlerden yararlanmıştım..

Diğer başlıkta ( https://www.picproje.org/index.php/topic,68288.0.html ) konu açmıştım ama burada da sorayım class ile record un ne farkı var?
Seytan deliginden kacti.

boreas

Record tanımladığın zaman o değişkenlere ait hafızada yer açılır. ve direk değişken atamaya başlarsın. Class tanımladığında herhangi birşey oluşmaz o sadece bir tanımdır ve classda ek olarak yaratılma esnasında (create) ya da mouse panelin üzerine gelince ne yapsın gibi olayları bu class tanımına işleyebilirsin. Ama bunlar dediğim gibi hala tanım olarak geçer. ne zaman ki ;
var
entegre : Tentegre;
begin
entegre := tentegre.create;
end;
dediğin anda artık bir obje olarak oluşur ve hafızadan yer alır ve avantajı şudur. tbacak yapısı esasen tpanel yapısına ek özellikler katılarak oluşmuştur. ve bir kez oluşturdukdan sonra binlercede kullansan çok kolay bir şekilde oluşturur kullanırsın. Diğer bir avantajda şimdi yazmış olduğun programdaki bütün panellere bir özellik eklemek istediğini düşün mesela rengini değiştireceksin bunu bütün panellerde tek tek yapman lazım bunun yerine bacak sınıfında rengi değiştirirsen zaten bacak kullanan büyün yapılar otomatik olarak değişir.

Bir yapılabilir iş daha panel sınıfından bileşen oluşturup başka uygulamalarda da direk component gibi kullanabilirsin. Ama bu daha çok uğraştırır fakat ileriye dönük temiz bir iş olur.