Uno'yu kullanarak bir Arduino projesi üzerinde çalışıyorum. Proje önemli miktarda kod içermektedir. Bir kütüphane oluşturmak istiyorum ve daha sonra bile paylaşabilirim. Kütüphaneyi tasarlarken hangi yönergeleri izlemeliyim?
Uno'yu kullanarak bir Arduino projesi üzerinde çalışıyorum. Proje önemli miktarda kod içermektedir. Bir kütüphane oluşturmak istiyorum ve daha sonra bile paylaşabilirim. Kütüphaneyi tasarlarken hangi yönergeleri izlemeliyim?
Yanıtlar:
Bir kütüphane tasarlarken aklınızda bulundurmanız gereken birçok nokta vardır. Muhtemelen, çalışmanızı başkalarıyla paylaşacağınız için, tutarlı tasarım modellerini takip etmek son derece önemlidir. Diğer kullanıcıların son derece değişken beceri seviyelerine sahip olacağını unutmayın, bu nedenle kullanımı kolay bir kütüphane mümkün olan en üst düzeyde tasarlayın.
Kütüphanenizin beklediği temel bir pin haritası sağlayın. Raptiye eşlemesini sabit tutmayın, ancak kullanıcının kolayca değişiklik yapmasına izin verin.
Sağlamaya çalışmanız gereken ilk şeylerden biri kütüphanenizin çalıştığıdır. Değilse, açıkça belirtin. Kırık yazılımlarla çalışmaya çalışırken zamanınızı boşa harcamak istemezsiniz, bu yüzden başkalarının da yapmasına izin vermeyin.
Kütüphanenin hangi pano (lar) için tasarlandığını, hangi sınav için test edildiğini ve hangi panoların çalışması beklendiğini açıkça belirtin. Burada belirtilen her kartın oluşturulmasını (sürümünü) belirtin.
Bir sonraki şey, açıkça tanımlanmış arayüzlere sahip olmanızdır. Kıvrımlı arayüzlere sahip bir çalışma kütüphanesi sinir bozucu. Bu, daha sonra kütüphaneyi kullanmanıza yardımcı olacak ve diğer kullanıcılar için işleri daha kolay hale getirecektir. Bu, akılda tutulması gereken en önemli unsurlardan biri olmalıdır.
Yukarıdan aşağıya veya aşağıdan yukarıya bir yaklaşımı takip etseniz de, arayüzler zihninizde daima açık olmalıdır. Aşağıdan yukarıya bir yaklaşımda, bu zor olabilir ve olacaktır, ancak göz ardı edilmemelidir. Aksi takdirde, kullanılamayabilecek aşırı karmaşık bir kütüphane ile karşılaşacaksınız.
Bazı özel kart özelliklerini kullanan herhangi bir fonksiyonunuz varsa, benioku ve yorumlarda bu fonksiyonları öne çıkardığınızdan emin olun.
Yoğun bir bekleme kullanmanız gerekebilecek senaryolar olabilir. Bu tür fonksiyonlar, program mantığına bağlı olarak, normal kontrol akışını engelleyerek kritik bir görevin ortasında sorun yaratabilir. Mümkünse kesmeleri veya diğer algoritmaları kullanmayı deneyin. Değilse, bu tür işlevleri açıkça belirtin.
Yaptığınız her küçük ve büyük değişikliği yorumlamaya devam ettiğinizden emin olun. Tüm kritik işlevler için güzel uzun yorumlar yazın ve diğerleri için daha küçük işlevler yazın. Arayüzünüzü, her bir argümanı, ne yaptığını ve neyi döndürdüğünü açıkça tanımlayın. Bu çok fazla iştir, ancak hem siz hem de diğerleri için son derece yararlı olacaktır. Farklı kart (lar) da çalışmayabilecek herhangi bir fonksiyonunuz varsa, burada belirtin. Bunlar diğer işlevler tarafından kullanılan ara işlevlerse ve gerekli olabilirse, Benioku dosyasında belirtin.
Yorumlarda bile her şeyin .h
ve .cpp
dosyalar arasında tutarlı olduğundan emin olun .
Yalnızca ilgili işlevleri tek bir dosyada saklayın. Birkaç küçük ama mantıksal olarak tutarlı modüle sahip olmak, içindeki her şeyi içeren büyük bir dosyadan daha iyidir.
Kütüphaneyi, yeteneklerini, sorunları veya hataları ve temel kullanılabilirliği tanımlayan net bir benioku dosyası yazın. Yukarıda açıklandığı gibi her arabirimi tanımlamak ve açıklamak için ayrı bir dosya kullanın.
Kütüphane büyüdükçe dizinlere bölünmesi gerekebilir. Arduino-ide kullanılırken bu kolayca mümkün değildir . Ancak, şu ana kadar ulaştıysanız, muhtemelen gelişmiş bir Arduino kullanıcısısınız ve daha güçlü geliştirme araçları kullanıyorsunuz. Değilse, bunu yapmanızı söyleyen evren budur.
Bir lisans eklediğinizden emin olun.
Git veya SVN gibi bir VCS aracı kullanın. Bu, yapılan değişiklikleri görmeyi, eski sürümlere dönmeyi, hataya neden olan kodu tespit etmeyi ve hatta başkalarıyla işbirliği yapmayı çok daha kolay hale getirecektir.
AshRj'in cevabı çok iyi - eklemek için sadece 2 puanım var.
Nokta 1: Belgeler
AshRj ayrıntılı bir benioku yazmanızı tavsiye etti. Bu iyi bir uygulama olsa da, daha büyük kütüphanelerle hızlı bir şekilde elden çıkabilir - aslında, birkaç bin satırda bile (ki bu çok fazla değildir), bir benioku neredeyse hiç faydası olmayacaktır. Benim tavsiyem bir adım daha ileri gitmek ve C ++ için Javadocs eşdeğerini kullanmak olacaktır - bu cevap açıkladığı gibi (Yığın Taşması üzerindedir), Doxygen belgeleri yönetilebilir ve el altında tutmak için çok yararlı bir araçtır (hiç kimse bir 10K satırlı benioku dosyası ...)
Nokta 2: Dizinler
Yine AshRj'in cevabına zıt olarak, daima dizinleri kullanın. Sadece 10 veya hatta sadece 7 veya 8 ile bile olsa, biraz aptalca geldiğini biliyorum, ama işinizi geleceğe hazırlıyor ve erken başlamazsanız, Dosyalar. Dizinler sadece büyük projeler için değil, küçük projeler de bunları kullanmalıdır. C ++ 'da (de-facto Arduino dili), kitaplıktaki dosyaları eklerken dizinlerin yok sayıldığını unutmayın - bunlar yalnızca kod yönetimi aracı olarak bulunur.