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

2
Türetilmiş sınıf ham dinamik bellek ayırmıyorsa neden temel sınıfın burada sanal bir yıkıcıya ihtiyacı var?
Aşağıdaki kod bellek sızıntısına neden oluyor: #include <iostream> #include <memory> #include <vector> using namespace std; class base { void virtual initialize_vector() = 0; }; class derived : public base { private: vector<int> vec; public: derived() { initialize_vector(); } void initialize_vector() { for (int i = 0; i < 1000000; i++) …

3
Aramalar pahalı olduğunda Python'daki tek sorumluluk ilkesi (SRP) ile çalışmak
Bazı temel noktalar: Yorumlanan doğası nedeniyle Python yöntem çağrıları "pahalıdır" . Teoride, kodunuz yeterince basitse, Python kodunun parçalanması okunabilirlik ve yeniden kullanımın yanı sıra olumsuz bir etkiye sahiptir ( bu, geliştiriciler için büyük bir kazançtır, kullanıcılar için çok fazla değildir ). Tek sorumluluk ilkesi (SRP) kodu okunabilir tutar, test edilmesi …

4
Katmanlı bir yazılım mimarisinde aynı katmandaki nesneler arasında bağımlılık olması sorun yaratır mı?
N-katman mimarisine ve bağımlılık enjeksiyonuna sahip orta-büyük bir yazılım göz önüne alındığında, bir katmana ait bir nesnenin alt katmanlardaki nesnelere bağlı olabileceğini, ancak asla daha yüksek katmanlardaki nesnelere bağlı olabileceğini söylemek rahatım. Ama aynı katmanın diğer nesnelerine bağlı nesneler hakkında ne düşüneceğimi bilmiyorum. Örnek olarak, üç katman ve görüntüdeki gibi …

4
Çekme istekleri büyük olduğunda daha iyi kod incelemeleri nasıl yapılır?
Feragatname: Bazı benzer sorular var, ancak büyük bir çekme isteğini incelerken özellikle karşılaştığınız sorunlara dokunan herhangi bir şey bulamadım. Sorun Kod incelemelerimin daha iyi bir şekilde yapılabileceğini hissediyorum. Özellikle 20'den fazla dosyada birçok değişiklik içeren büyük kod incelemelerinden bahsediyorum. Belirgin yerel kod sorunlarını yakalamak oldukça basittir. Kodun iş kriterlerini karşılayıp …

5
Ekibim, yabancı anahtar ilişkileri olan ilişkisel veritabanı varlıklarından korkuyor ve nedenini anlamıyorum
Ben nispeten üniversite dışında tazeyim, bu yüzden ilişkisel veritabanları ile aşinalık çoğu BCNF veya 3NF olmayan bir şey bir travesti olan benim veritabanları ders. Kesinlikle bu uç noktaların bir ucu, ama işteki ekibim gerçekten tam tersi görünüyor. Mikro hizmet db şemalarımızda, varlıklar nadiren tek bir tablodan daha fazlasına sahiptir. Yaygın …

1
C ++ özel üye işlevleri kapsüllemek için arkadaş sınıfları kullanma - iyi uygulama veya kötüye?
Bu yüzden, böyle bir şey yaparak başlıklara özel işlevler koymaktan kaçınmanın mümkün olduğunu fark ettim: // In file pred_list.h: class PredicateList { int somePrivateField; friend class PredicateList_HelperFunctions; public: bool match(); } // In file pred_list.cpp: class PredicateList_HelperFunctions { static bool fullMatch(PredicateList& p) { return p.somePrivateField == 5; // or whatever …

6
DDD OOP ile tanıştı: Nesneye yönelik bir depo nasıl uygulanır?
Bir DDD deposunun tipik bir uygulaması çok OO'ya benzemez, örneğin bir save()yöntem: package com.example.domain; public class Product { /* public attributes for brevity */ public String name; public Double price; } public interface ProductRepo { void save(Product product); } Altyapı bölümü: package com.example.infrastructure; // imports... public class JdbcProductRepo implements ProductRepo …

1
Micro-frontend ile yedekli kod boruyu gönderdi
Micro-frontends anlayışım, çözdükleri en önemli sorunun, işletmelerin çok sayıda, olası farklı ekiplere sahip olmalarına, büyük bir web uygulaması oluşturmak için kullanılacak bireysel bileşenler / küçük uygulamalar üzerinde çalışmalarına yardımcı olmaktır. Burada çözülmesi gereken temel sorun , birden fazla takımın bağımsız olarak çalışabilmesi ve hala büyük bir kompozit oluşturabilmesidir. Sorun, son …

5
Zaten soyut bir sınıfım varsa bir arayüz tanımlamak anlamlı mı?
Bazı varsayılan / paylaşılan işlevselliği olan bir sınıf var. Bunun için kullanıyorum abstract class: public interface ITypeNameMapper { string Map(TypeDefinition typeDefinition); } public abstract class TypeNameMapper : ITypeNameMapper { public virtual string Map(TypeDefinition typeDefinition) { if (typeDefinition is ClassDefinition classDefinition) { return Map(classDefinition); } ... throw new ArgumentOutOfRangeException(nameof(typeDefinition)); } protected …

4
saçma sapan varsayılan değeri olan yapı
Benim sistemde sık sık havaalanı kodları (çalışabilir "YYZ", "LAX", "SFO"vs.), bunlar (büyük harf olarak temsil 3 harfi) aynı formatta her zaman vardır. Sistem tipik olarak API talebi başına bu (farklı) kodların 25-50'sini ele alır, toplamda binden fazla tahsis ile, bunlar uygulamamızın birçok katmanından geçirilir ve eşitlik açısından sık sık karşılaştırılır. …



5
Hangi durumlarda (varsa) iki sunucuyu sorgulamak ve yalnızca en hızlı yanıtı kullanmak iyi bir uygulamadır?
Birisinin neden javascript kullanması konusunda SO tarafından silinen bir Topluluk sorusu sorusunun ne olduğunu sordum Promise.raceve yüksek rep kullanıcısı bu yorumu yaptı: Bazı değerleri hesaplayan iki hizmetiniz varsa, bunları paralel olarak sorgulayabilir ve birini sorgulamak, başarısızlık beklemek ve sonra ikincisini sorgulamak yerine ilk olarak döndürülen değeri kullanabilirsiniz. Artıklık ve genel …

2
Bir uygulamanın bölümleri farklı dillerde yazıldığında veri yapılarının çoğaltılması nasıl önlenir?
Örnek olarak, Java'da bir uygulama yazdığınızı varsayalım . Uygulamanız Python ile yazılmış bir API sunucusuyla iletişim kurar . Python sunucusu bir SQL veritabanı ile iletişim kurar . Uygulamanız için JavaScript ile yazılmış bir web siteniz de var . 4 farklı dilde, temel olarak aynı veri yapılarını 4 farklı kez tekrarlamak …

4
Bir sınıf, hangi yöntem alt kümesini uyguladığı kullanıcılarıyla nasıl iletişim kurmalıdır?
senaryo Bir web uygulaması, kullanıcı arka uç arabirimini IUserBackendyöntemlerle tanımlar GetUser (UID) CREATEUSER (UID) deleteUser (UID) setPassword (uid, şifre) ... Farklı kullanıcı arka uçları (örneğin LDAP, SQL, ...) bu arabirimi uygular, ancak her arka uç her şeyi yapamaz. Örneğin, somut bir LDAP sunucusu bu web uygulamasının kullanıcıları silmesine izin vermez. …

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.