Yazılım Mühendisliği

Sistem geliştirme yaşam döngüsü içinde çalışan profesyoneller, akademisyenler ve öğrenciler için soru-cevap

3
Gevşek Birleştirilmiş Kod İçin Arabirimleri Kullanma
Arka fon Belirli bir donanım aygıtının kullanımına bağlı bir projem var, ancak bu donanım aygıtını yapmam gereken şeyi yaptığı sürece kimin yaptığı önemli değil. Bununla birlikte, aynı şeyi yapması gereken iki cihazın bile aynı üretici tarafından yapılmadığında farklılıkları olacaktır. Bu yüzden uygulamayı ilgili marka / modelden ayırmak için bir arayüz …

4
Yazdığım her sınıf bir arayüze uymalı mıdır?
Typescript'te bir oyun yazıyorum ve bir nesnenin uygulanması yerine bir arabirime dayalı kod yazdığınız " arabirim tabanlı programlama " fikrine uymaya çalışacağım olmaya karar verdim . Çok sayıda arayüz ve bunları uygulayan sınıflar yazdım, sonra bir adım geri attım ve sınıfların uygulamayı asla değiştirmem gerekmeyecek kadar basit olduğunu fark ettim, …

3
Güvenli olmayan kodun yanlışlıkla kullanılmadığından emin olun
Bir işlev f(), programımı çalıştıran makinede eval()oluşturduğum ve sakladığım verilerle (veya tehlikeli bir şeyle) kullanır local_file: import local_file def f(str_to_eval): # code.... # .... eval(str_to_eval) # .... # .... return None a = f(local_file.some_str) f() ona sağladığım dizeler benim olduğu için çalıştırmak güvenlidir. Ancak, güvenli olmayan bir şey (örneğin kullanıcı …

3
Nxnxn kübik kafes içinde simetri altında benzersiz olan tüm m noktaları kümelerini oluşturmak için algoritma
Oldukça hesaplama açısından karmaşık olacak bir algoritma uyguluyorum ve gereksiz iş yapmadığımdan emin olmak istiyorum. Bir nxnxn kübik kafes vardır, örneğin n = 2 ise bu (0,0,0), (0,1,0), (1,0,0), (1,1,0), (0, 1,1), (0,0,1), (1,0,1), (1,1,1). Bu kafesden, m noktalarının tüm setlerini tekrar tekrar üreteceğim, şöyle bir şey: solve(set_of_points) { if …

3
Sorumluluk paylaşıldığında tek sorumluluk nasıl yönetilir?
İki temel sınıfım var Operationve Trigger. Her birinin belirli işlem veya tetikleyici türlerinde uzmanlaşmış bir dizi alt sınıfı vardır. A Triggerbelirli bir şeyi tetikleyebilir Operation. Iken Operationbelirli bir tarafından tetiklenebilir Trigger. OperationBelirli bir Trigger(veya tam tersi) verilen bir eşler kodunu yazmak gerekir , ama nereye koymak emin değilim. Bu durumda …

3
Eğer değişkenleri yeniden tanımlamak için def kullanabilirsinizse, bu nasıl değişmez olarak değerlendirilir?
Clojure'u öğrenmeye çalıştığınızda yardım edemezsiniz, ancak Clojure'un tamamen değişmez verilerle nasıl ilgili olduğu sürekli olarak söylenir. Fakat bir değişkeni defdoğru kullanarak yeniden tanımlayabilirsiniz. Clojure geliştiricilerinin bundan kaçındığını anlıyorum, ancak herhangi bir dilde değişkenleri aynı şekilde değiştirmekten kaçınabilirsiniz. Birisi bana bunun nasıl farklı olduğunu açıklayabilir mi, çünkü okuduğum derslerden ve kitaplardan …
10 clojure 

2
Python'un mirası “is-a” mirası mı yoksa kompozisyon tarzı mı?
Python'un çoklu kalıtıma izin verdiği göz önüne alındığında, Python'daki deyimsel kalıtım neye benziyor? Java gibi tek kalıtıma sahip dillerde, bir nesnenin başka bir nesnenin "a-a" olduğunu ve nesneler arasında (üst nesneden alt nesneye) kod paylaşmak istediğinizde kalıtım kullanılır. Örneğin, diyebiliriz Dogbir olduğunu Animal: public class Animal {...} public class Dog …


3
Çok sayıda argümana sahip yapıcılardan kaçınma
Bu yüzden farklı sınıflardan nesneler yaratan bir fabrikam var. Olası sınıfların tümü soyut bir atadan türetilir. Fabrikada bir yapılandırma dosyası (JSON sözdizimi) vardır ve kullanıcının yapılandırmasına bağlı olarak hangi sınıfın oluşturulacağına karar verilir. Bunu başarmak için, fabrika JSON ayrıştırma işlemi için boost :: property_tree kullanır. Ptree'de yürür ve hangi somut …

3
Testler için özel ayarlayıcılarla Stubbing Properties
Nesnemiz var public class MyObject{ protected MyObject(){} public string Property1 {get;private set;} public string Property2 {get;private set;} public string Property3 {get;private set;} public string Property4 {get;private set;} public string Property5 {get;private set;} public string Property6 {get;private set;} public string Property7 {get;private set;} public string Property8 {get;private set;} public string Property9 …

2
Programcılar neden paralellik için C / POSIX'in yerini alacak programlama modellerini tanımlamaktadır?
Yeni bilgisayar mimarileri sağlayıcıları düzenli olarak yeni programlama modelleri sunmaya çalışır, örn. GPGPU'lar için yakın zamanda CUDA / OpenCL ve platform paralelliğinin kontrol arabirimi olarak C / POSIX'i değiştirir. (Poss & Koening, AM3: Çok çekirdekli bir Unix hızlandırıcısına doğru, 2015) Mimari tasarımcıları neden paralel hesaplama için C / POSIX'in yerini …

2
Yazarken kopyalama semantiğinin avantajları
Yazarken kopyalamanın olası avantajlarının neler olduğunu merak ediyorum. Doğal olarak, kişisel görüşler beklemiyorum, ancak somut bir şekilde teknik ve pratik olarak faydalı olabileceği gerçek dünyadaki pratik senaryolar. Somut olarak, bir &karakteri yazmaktan daha fazlasını kastediyorum . Açıklığa kavuşturmak için, bu soru, atama veya kopya oluşturma işleminin örtük bir sığ kopya …
10 c++  qt 

2
LGPL neden GPL'nin bir kopyasını eklemek için birleşik işler gerektiriyor?
LGPL lisansını okuyordum ve daha önce bilmediğim bir gereksinim buldum. Bölüm 4 (Karma İşler) şunları belirtir: Aşağıdakilerin her birini de yaparsanız Kombine Çalışma [...] iletebilirsiniz: a) Kombine Eserin her bir kopyasında Kütüphane'nin içinde kullanıldığı ve Kütüphane ve kullanımının bu Lisans kapsamında olduğunu belirten bir uyarı verin. b) Birleşik Çalışma'ya GNU …

3
Senaryom için en iyi veri deposu hangisidir?
Ben veritabanında güncelleme / seçme sorguları çok yüksek yürütme içeren bir uygulama üzerinde çalışıyorum. Bir varlık için bir gün için yaklaşık 500 kayıtları olacak bir temel tablo (A) var. Ve sistemdeki her kullanıcı için, kullanıcının bazı tercihlerine göre bu varlığın bir varyasyonu oluşturulur ve bunlar başka bir tabloda (B) saklanır. …

4
Arama Tabloları: Etki alanı modelinde sızıntı var mı?
Şirketleri takip eden bir sistem kuruyorsunuz. Bu şirketlerin Rehberleri var. Bu kişiler genellikle Faturalandırma / Ödeme, Satış, Sipariş ve Müşteri Desteği gibi belirli soruları yanıtlayan uzmanlardır. Etki Alanına Dayalı Tasarım ve Soğan Mimarisini kullanarak, bunu aşağıdaki türlerle modelledim: şirket Kişileri Var İletişim İletişim Türleri Var ContactType (numaralandırma) CompanyRoository (arayüz) EFCompanyRepository …

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.