Wednesday, May 11, 2011

Eğer 64 bit bir Windows 7 işletim sisteminiz var ve kendi lokal makinenizde SharePoint çalışmak istiyorsanız, hemen Easy Setup Script i deneyin derim . Bu minik exe size, kendi geliştirme ortamınızı yaratmak için çok yardımcı olacak ...

Easy Setup Scripti İndir

Wednesday, May 11, 2011 10:49:08 AM (GTB Standard Time, UTC+02:00)  #    Comments [0]  | 
Wednesday, April 27, 2011

Merhaba,

SharePoint 2010 makalelerine vakit buldukça kendimce önemli olan konulardan devam etmek istiyorum.

Bu sefer anlatmak istediğim konu “Event Receivers” yani Türkçesi ile “Olay Algılayıcıları” dersek sanıyorum çok yanlış olmaz. SharePoint in ne kadar güçlü bir altyapıya sahip olduğunu tekrar söylememe gerek yok diye düşünüyorum ki Event Receiver lar da SharePoint e güç katan önemli bir özelliktir diyebiliriz.Ayrıca SharePoint in barındırdığı bu Event Receiverlar çok geniş bir yelpazeye sahiptir. Bir Event Receiverı,  SharePoint List, ListItem ya da Site için kullanabilirsiniz. Kabaca özetleyecek olursak, SharePoint ekosisteminde bir olay meydana geldiğinde, bu olayı yakalayıp başka aktiviteleri tetiklemeye yarar. Örneğin, şirketinizin İK departmanı, personeli ilgilendiren dökümanlarını Custom bir SharePoint List üzerinde paylaşıyor olsun ve siz de bir çözüm geliştirici olarak personelin hayatını kolaylaştırmak adına, her yeni döküman eklenildiğinde personele e-mail atarak yeni döküman eklendiği bilgisini vermeyi düşünüyorsunuz. Bu işlemi otomatize etmek için imdadınıza EventReceiver lar koşacaktır.

Lafı fazla uzatmadan, basit bir örnek üzerinden giderek icraate geçelim.

Öncelikle boş bir SharePoint 2010 projesi oluşturuyorum ve ERTest olarak adlandırıyorum.Proje tipini de Deploy as a Farm Solution olarak seçiyorum.
Daha sonra SharePoint sistemim üzerinde IKDocs adında bir Document Library oluşturuyorum.
Tekrar Visual Studio tarafına geçiyoruz ve projemize Add New Item diyerek bir EventReceiver ekliyoruz, ben bu EventReceiver in ismine IKDocsER dedim. Karşımıza bir ekran gelecek, buradan Event Receiver ımızın nereleri ve neleri izleyeceğini belirliyoruz. “What type of Event Receiver do you want?” sorusuna “List Item Events” diyoruz, “What item should be the event source?” sorusuna “Document Library” diyoruz, Handle the following events yani hangi olayları izlememi istiyorsun kısmında ise “An item was added” i seçiyoruz sadece. (Siz bu kısımda birden fazla seçenek seçebilirsiniz ama hepsi için ayrı ayrı handle eden kodları da yazmanız gerek)

public override void ItemAdded(SPItemEventProperties properties)
       {
           base.ItemAdded(properties);
 
       }

 

Yukarıdaki şekilde hazır gelen kodumuzu şu şekilde değiştiriyoruz.

         public override void ItemAdded(SPItemEventProperties properties)

       {

           base.ItemAdded(properties);

           if (properties.ListTitle == "IKDocs")

           {

               //your logic ...

               //properties.ListTitle

           }

       }

Burada şunu yapıyor kodlarımız,  doküman eklenen Document Library miz “IKDocs”  mü değil mi kontrolü öncelikle. Daha sonra istediğimiz işi yapabiliriz, burada mail atma ve buna benzer işlemler tamamen size kalıyor. ItemAdded metoduna gelen SPItemEventProperties tipindeki properties değişkeninden size gereken bilgileri de alabilirsiniz...Burada birsürü şey yapılabilir, örneğin bu Document Library ile ilişkilendirilmiş bir workflow start edilebilir, announcements olarak başka yerlere de bildirimler yapılabilir vs. Gerisi tamamen sizin ihtiyaçlarınıza ve hayal gücünüze kalıyor. Özetle, IKDocs adlı document library mize yeni bir eleman eklendiğinde kodlarımız tetikleniyor.

Event Receiver lar konusuna da böylece değinmiş olduk. Umarım işinize yarar bir makale olmuştur.

Wednesday, April 27, 2011 10:15:21 AM (GTB Standard Time, UTC+02:00)  #    Comments [0]  | 
Friday, April 22, 2011

Bu makalede SharePoint in önemli parçalarından olan WebPart ların birbiri ile nasıl konuşabileceğine dair bir örnek geliştireceğiz.

Öncelikle örneğimizde kullanmak için bir custom SPList oluşturalım. Site Actions > More Options > List > Custom List. Custom Listemize ben “Dersler” dedim. Siz istediğiniz gibi isimlendirebilirsiniz. Bu listeye elemanlar ekleyeceğim.(Matematik, Fizik, Geometri, Kimya...)

Listemi oluşturduktan sonra Visual Studio 2010 da yeni bir Empty SharePoint projesi oluşturuyorum ve proje ismini de “ConnectedWP” olarak belirliyorum.

Projeme bir Interface ekliyorum. IDers.cs (Add > New Item, Visual C# altından Code sekmesinden Interface seçiyorum)

namespace ConnectedWP { public interface IDers { int Id { get; } string Name { get; } } }

Daha sonra projemize, Provider WebPart ımızı ekliyoruz. (Add > New Item > WebPart), ismini ProviderWebPart olarak belirliyorum.

public class ProviderWebPart : WebPart kısmını, yeni interface imi kullanacak şekilde değiştiriyorum, yani şöyle oluyor : public class ProviderWebPart : Microsoft.SharePoint.WebPartPages.WebPart, IDers

Daha sonra, sınıfımızın içerisini şu şekilde dolduruyoruz :
DropDownList _projectPicker = null; int IDers.Id { get { return int.Parse(_projectPicker.SelectedValue); } } string IDers.Name { get { return _projectPicker.SelectedItem.ToString(); } }

Ardından da CreateChildControls metodunun içini şu şekilde değiştiriyoruz.

base.CreateChildControls(); try { _projectPicker = new DropDownList(); using (SPSite spSite = new SPSite(SPContext.Current.Web.Url)) using (SPWeb spWeb = spSite.OpenWeb()) { SPList projectsList = spWeb.Lists["Dersler"]; foreach (SPListItem project in projectsList.Items) { _projectPicker.Items.Add(new ListItem(project.Name, project.ID.ToString())); } } _projectPicker.AutoPostBack = true; this.Controls.Add(_projectPicker); } catch (Exception ex) { this.Controls.Clear(); this.Controls.Add(new LiteralControl(ex.Message)); }

Son olarak da WebPartlarımız arası bağlantı noktasını oluşturacak kodumuzu ekliyoruz,
[ConnectionProvider("Ders Adi ve ID")] public IDers HerhangiBisey() { return this; }

Sıra şimdi Consumer WebPartımıza geldi, ilk WebPartımızı eklediğimiz gibi bunu da aynı şekilde ekliyor ve adını “ConsumerWebPart” koyuyorum. WebPart ın kod kısmına geçip class tanımının hemen altına şunları ekliyorum (Dikkat ederseniz burada, WebPartımızın türediği kısma dokunmadık)

IDers _provider = null; Label _lbl = null;

Yine CreateChildControls metoduna gidip şu şekilde değiştiriyoruz :

base.CreateChildControls(); try { _lbl = new Label(); if (_provider != null) { if (_provider.Id > 0) { _lbl.Text = _provider.Name + " seçildi."; } else { _lbl.Text = "Henüz hiçbirşey seçilmedi."; } } else { _lbl.Text = "Provider WebPart bağlantısı yok."; } this.Controls.Add(_lbl); } catch (Exception ex) { this.Controls.Clear(); this.Controls.Add(new LiteralControl(ex.Message)); }

Ve yine son olarak WebPart lar arası bağlantıyı kuracak kod bloğumuzu da ekliyoruz :
[ConnectionConsumer("Ders Adi ve ID")] public void BurasininIsmıFarkEtmez(IDers providerInterface) { _provider = providerInterface; }

Artık WebPartlarımızı deploy edebiliriz. Deploy ettikten sonra bir WebPartPage oluşturup (SiteActions > More Options > Page > WebPartPage), bu sayfada , deploy ettiğimiz WebPartları kullanıp test edebiliriz. Ben sayfama “ConnectedWPTest” adını verdim ve SitePages in altına koydum. Daha sonra WebPart larımı bu sayfaya eklemek için herhangi bir yerden “Add a Web Part” seçtim ve Custom kategorisi altında bulunan ConsumerWebPartımı sayfaya yerleştirdim.

Aynı şekilde Provider WebPartımı da ekliyorum. En son adım olarak da, WebPartları birbirine bağlama işlemi için, ProviderWebPart ın “Connections” kısmına gidip, “Send Ders Adi ve ID to Consumer Web Part” ı seçiyorum.

İşlem tamam, sayfama gidip test ediyorum, DropDownList de bulunan dersler (ilk adımda yarattığımız SP Custom List den doluyor) den birini seçtiğimde, ConsumerWebPart ımda bulunan Label değişiyor.


Umarım işinize yarar bir makale olmuştur.
Friday, April 22, 2011 11:05:11 AM (GTB Standard Time, UTC+02:00)  #    Comments [0]  | 
Sunday, November 21, 2010

System.Threading Namespace inde bulunan Interlocked sınıfını hızlıca inceleyelim.

Lock kullanmak aslında pek de istenilen bir durum değildir. Mümkün olduğunca Lock lardan kaçınmak istesek de zaman zaman mecbur kaldığımız olur. Multithread uygulamalarda paylaşmamız gereken ortak değişkenler olabilir, böyle durumlarda Lock kullanmak gerçekten maliyetli olabiliyor. E hal böyleyken de uygulamanın büyüklüğüne göre ciddi performans sorunları ile boğuşmak zorunda kalabiliyoruz. Uzmanların tavsiyesi ise Lock yerine Interlocked kullanmak :)

Şunu da hatırlatmadan geçmeyelim, çok iterasyonlu bir döngüde Interlocked kullanmak, tek bir Lock içindeki döngüden daha az verimli olabilir.

Performans testi kodlarımız ise şöyle :

Gerçekten de Interlocked ın daha kısa sürede işini bitirdiğini görebiliyoruz. Interlocked in kullanımına dair birkaç örnek kodcuk da şöyle idi :

Basit bir konsol uygulaması üzerinde uygulayıp siz de test edebilirsiniz.

Sunday, November 21, 2010 3:28:24 PM (GTB Standard Time, UTC+02:00)  #    Comments [0]  | 
Wednesday, November 10, 2010

Microsoft tarafından geliştirilen kod frameworku olan All-In-One, birçok developera ilaç gibi gelecek :) Tamamen ücretsiz olan frameworkde developerlar tarafından sıkça sorulan sorulara yönelik kod örnekleri bulabilirsiniz.

1code.codeplex.com

Wednesday, November 10, 2010 10:17:19 AM (GTB Standard Time, UTC+02:00)  #    Comments [0]  | 
Tuesday, October 19, 2010

c# 4.0 la beraber gelen yeni tiplerden biri de Tuples.
Yapı olarak Anonymous typelara benzese de, kullanırken dikkatli olmak gerek. Gereksiz kullanımlarda kodun karmaşık bir görünüm almasına neden olabilir.
Tuples özetle N adet eleman saklayabilen objelerdir. .NET framework 1 den 8 e kadar eleman saklama desteğini veriyor fakat iç içe Tuple lar kullanarak N adet eleman saklayabiliriz.

Anonymous tipleri üzerinden örnek vererek gidecek olursak,

var anyobject={ name="michale", id=7, birthDate=DateTime.Now()} ;

gibi tanımladığımız nesnelerdi. Ayrıca anonymous type ların Read Only olduklarını ve anonymous tipleri metodlara parametre olarak gönderemeyeceğimizi, aynı şekilde metod geri dönüş değeri olarak kullanamayacağımızı da unutmayalım.
Programın fonksiyonel olarak kullanımını kolaylaştıran bu anonymous tipler varken neden Tuples kullanıyoruz peki ? Şu yüzden diyebiliriz mesela; Tuples i metodlardan geri dönüş değeri olarak kullanabiliyoruz, ancak burada şöyle bir trade off var, Tuples, yazılım geliştiriciler pek anlamlı isimler taşımaz. Tuple property leri Item1 Item2 gibi isimler alırlar genelde. Tuples, ne barındırdığı hakkında bilgi içermez.
Eğer iki tuple aynı veri tipinden değerler saklıyorsa, bu Tuple lar birbirine eşittir diyebiliriz. Örneğin, bir noktanın koordinatlarını tutan bir Tuple ile bir popülasyondaki kadın-erkek oranını tutan ik tuple. Bunları Tuple objesinde saklayabiliriz.
Anonymous type larla kıyaslarsak, Tuple yerine Anonymous type kullanmak daha mantıklı olabilir, tabi eğer işimizi görüyorsa, çünlü anonymous typelarla veri hakkında daha çok bilgi tutabiliyoruz. Anonymous type larda bulunan propertyler bize az da olsa bir fikir verebilir. Metoda parametre göndermek ve geri dönüş değeri almam gerekmiyorsa kullanmamam daha faydalı olacaktır.

var testTuple = Tuple.Create(1, 4, 9, 16, 25, 36, 49, Tuple.Create(64, 81, 100, 121, 144));

iç içe geçmiş bir Tuple örneği

Anonymous typeların aksine, Tuples sealed değildir, yani gelişime ve kalıtıma açıktır. Tuples aynı zamanda .NET 4.0 la gelen iki yeni interface i destekler :IStructuralComparable and IStructuralEquatable. IStructuralEquatable Equal() adlı bir metodu işaret eder, bu sayede IEqualityComparer kullanarak tuple daki bütün elemanlar eşit mi kontrolü yapabiliriz. StructuralComparable ve StructuralEquatable ise sıralama ve eşitlik kıyaslama kontrollerinde kullanılır.Aynen bir LINQ sorgusu gibi "orderby ıtem1,Item1" şeklinde kullanıma müsaittir.

Sonlandırırken şunu söyleyebiliriz, Anonymous Types, Tuples a göre daha anlamlı bilgiler taşır ancak metodlara parametre değeri olarak gidemez ve return değeri olarak kullanılamaz da.



Kaynak : MSDN

Tuesday, October 19, 2010 12:46:09 AM (GTB Standard Time, UTC+02:00)  #    Comments [0]  | 
Tuesday, June 29, 2010

Yazdığımız kodların analizini yapması için bir tool a ihtiyacımız var diyenlere FxCop iyi bir alternatif olabilir. Tesadüfen karşıma çıktı ansızın, denedim sevdim, özellikle .net dünyasına yeni girişmiş arkadaşlarımızın çok işine yarayabilir...

Daha fazlası için tıklayalım

Tuesday, June 29, 2010 10:27:58 PM (GTB Standard Time, UTC+02:00)  #    Comments [0]  | 
Saturday, April 17, 2010

Compile zamanında hata vermeyen ama eğer yanlış ya da mantıksız kullanılırsa run-time da hata veren yepyeni bir tipimiz var artık.
Örneğin;

dynamic x= 7;
x.SayHello(); // gibi bir durumda run-time hatası alırız...

ama mesela şöyle aritmetik ortalama yapan bir program parçası için düşündüğümüzde ise gayet kullanışlı olabilir;

static dynamic ortalama(dynamic x, dynamic y)
{
return (x + y) / 2;
}
static void Main()
{
int x = 3, y = 4;
Console.WriteLine (ortalama(x, y));
}

burada kazancımız nedir ? açıkça görebiliriz ki er sayı tipi için ayrı bir metot yazmamıza gerek kalmıyor...

dynamic ve object tipleri aslında birbirlerine çok çok benzerler, öyle ki run-time da
typeof(dynamic)== typeof(object) size true değerini verir, hata almazsınız. Aynı şekilde

typeof (List<dynamic>) == typeof (List<object>)
typeof (dynamic[]) == typeof (object[])

ifadeleri için de geçerlidir...

Object referansında olduğu gibi, dynamic tipini de herhangi bir object tipine refere edebiliriz;

dynamic x = "selam";
Console.WriteLine (x.GetType().Name); // String
x = 123; // hata vermez !
Console.WriteLine (x.GetType().Name); // Int32

Gördüğünüz gibi yapısal olarak object referanslamadan hiçbir farkı yok... Bu şekilde dinamik operasyonlara müsade eden yapılar kurabiliriz ;

object o = new System.Text.StringBuilder();
dynamic d = o;
d.Append ("selam");
Console.WriteLine (o); // selam !

Bir diğer konu da,

public class Test
{
public dynamic Foo;
}

metodunun aşağıdaki metotla aynı olması,

public class Test
{
[System.Runtime.CompilerServices.DynamicAttribute]
public object Foo;
}

Buradaki avantajımız, dynamic tipini desteklemeyen dillerde, kullanıcılar/developerlar object nesnesi kullanarak yollarına devam edebilirler...

Peki bizim var diye bir tipimiz de var, onunla arası nasıl bu dynamic in diye bakacak olursak;

• var şöyle der, “tipin değerlendirmesini derleyiciye(compiler) bırakalım”
• dynamic de şöyle der, “yokabi gerek yok,tipin değerlendirmesini biz çalışma zamanına bırakalım(run-time)”

dynamic x = "selam"; // Static tip dynamic, runtime tipi ise string
var y = "aleykum selam"; // Static tip  string, runtime tipi de string
int i = x; // run-time hatası
int j = y; // compile-time hatası alırız...

Saturday, April 17, 2010 4:51:40 PM (GTB Standard Time, UTC+02:00)  #    Comments [0]  | 
Sunday, February 28, 2010
ISO/IEC 42010 standartlarına göre, bir yazılım mimarı (takım ya da kişiler) sistem mimarisinden sorumlu olan kişilerdir; şöyle ki Yazılım mimarı, analistlerle ve proje yöneticisi ile irtibatta olur, sistemi değerlendirir, yeni seçenekler önerir ve yazılım geliştirici takımıyla koordine olur. Yazılım mimarı, geliştirme sürecinin bütün evrelerinde bulunur yani gereksinim analizleri ve mimari tasarım, gerçeklenme aşaması, test edilmesi,entegrasyonu ve yayına alınması gibi. Bir yazılım projesinde, mimar devreye girmeden önce, analistler, IT müdürleri ve yöneticiler toplanır, tartışır, değerlendirir ve ortak bir karara varırlar. Yeni bir sisteme ihtiyaç olduğu veya varolan sistemin güncellenmesi gerektiği sonucuna varıldığında ve gerekli bütçe sağlandığında analistler, iş tecrübelerine,şirket süreçlerine, mevcutşartlara ve son kullanıcılara bakarak sistem gereksinimlerini çıkarmaya başlarlar. Gereksinimler listesi hazır olduğunda, proje yöneticisi yazılım mimarı ile toplanır ve elindeki koca listeyi mimara iletir. Mimar da gereksinimleri doğrular ve bu gereksinimleri tasarımda eksiksiz olarak yerine getirmeye çalışır. Unutmadan da söyleyelim, yazılım mimarisinde, kesin ve katı doğrular yoktur ve matematiksel kurallarla karar vermek mümkün değildir.A firmasının çok başarılı bulduğu bir mimari, B firması tarafından hiç beğenilmemiş ve uygulanmamış olabilir. Güzel olan, her iki mimarinin de tamamen doğru olabilme ihtimali. Peki kaç çeşit mimar olabilir ? ISO/IEC ye göre tek tip mimar vardır. Ama Microsoft kendi bünyesinde 4 tip mimar çeşidi oluşturmuş.Bunlar * Enterprise Architect * Infrastrcutre Architect * Technology-Specific Architect * Solution Architect Bu listeyi Microsoft Certified Architect Program da tanınan rollerde görebilirsiniz. MCA hakkında daha fazla bilgi için http://www.microsoft.com/learning/mcp/architect/specialties/default.mspx
Sunday, February 28, 2010 10:56:19 PM (GTB Standard Time, UTC+02:00)  #    Comments [0]  | 
Sunday, February 07, 2010
Tuesday, October 13, 2009
Türkçeye çevirmesine üşendiğim güzel bi yazı olmuş. Keşke vakit olsa da üzerinde yorum da yapabilseydim.
Link burada.7 adımda IT Strateji Testi
Linke tıklamaya üşenenler için de şöyle ;

Before formulating your company's IT strategy, there are a few questions that you should ask.

   1. Is the strategy too generic? IT organizations hardly cater to just one type of need, one kind of customer, or one market segment. The IT strategy must have an overall strategy, but it must also feature tactics that are specific to operating and market demands. Even the most successful enterprises know that one size hardly fits all. IT managers, therefore, should consider the unique needs of each business unit that makes up the entire organization - or they should consider each sample client that makes up the entire market segment.
   2. Is the strategy market-driven? Internal IT implementations are hardly the right starting points for new IT strategies. It is a truism that you cannot achieve the results that you want if you are doing the same things over and over. Step outside the corporate box, and try to look at the needs of your market. Instead of looking to top management for clues, ask the men and women on the ground about their needs as they might offer ideas that can improve the overall operating performance.
   3. Will the strategy be clearly communicated? Business strategies are usually understood by top management - usually in terms of paybacks and end-goals, but actual strategy implementations are usually lost in transmission. From the start, it is wise to document the strategy for wider distribution. Moreover, with this type of document, everyone at the organization can discuss the new policies, technologies, methods, and other possible changes.
   4. Is the strategy realistic? Your strategy must be developed with full regard for the resources needed to make a particular strategy work. Although a new strategy may sound promising, IT managers must think about practical aspects that include funds, technical competencies, and available technologies. Further, the new strategy must compliment – and not hinder – a company's culture.
   5. Does the strategy improve daily operations? Any new strategy must meet the operating and business goals of the company. Otherwise, it is a waste of effort and resources to formulate new policies, acquire new technologies, implement plans, or provide new sets of knowledge. If, at the end of the day, the new strategy does not result in more efficient operating procedures or greater market value, implementing a different strategy makes no sense whatsoever.
   6. Does the strategy have the right support system? By support system, we refer to the top and middle management support - as well as the general resource pool. After all, buy-in by the rank-and-file is just as important as the support of the strategy’s sponsors. Remember that in most change projects, failure is rooted within the people factor. In the same breadth, adoption by both management and the entire staff pushes the strategy towards a more successful path.
   7. Does the strategy adapt to changes in the business environment? Strategies must be dynamic enough to adapt to changes in the business environment. Assumptions must be validated as often as is necessary to either maintain the status quo or to trigger changes in the system.

Bu arada gözümden kaçmıyor, MS yetkilileri size sesleniyorum ! Daha Fr. 3.5 e bakamadan 4.0 la coşuyosunuz, ne bu acele ? Neyin peşindesiniz sorarım size ???

Tuesday, October 13, 2009 10:24:50 AM (GTB Standard Time, UTC+02:00)  #    Comments [0]  | 
Wednesday, June 03, 2009

Wednesday, June 03, 2009 2:32:19 PM (GTB Standard Time, UTC+02:00)  #    Comments [0]  | 
Wednesday, May 20, 2009

Daha Fr. 3.5 ile çok bişeyler yapamadan Fr. 4.0 Betası çıkıverdi. Bu işin sonu nereye gider bilmiyorum ama Microsoftcu yazılımcılara sabır diliyorum... Jason Zander abi baya bi inceleyip bişeyler yazmış, yazıları türkçeye çevirip ben inceledim diyip kimseyi kandırmak istemiyorum, merak eden okusun oradan.. :)

Training kit i inceleyip kasıcam ben diyosan da buraya gel...

Wednesday, May 20, 2009 3:03:55 PM (GTB Standard Time, UTC+02:00)  #    Comments [0]  | 
Tuesday, February 17, 2009



Sabahtan beri bişeyler yazıyorum Microsoft Tagging hakkında ama hepsi de silindi, sinirlerim bozuldu.
Microsoft un icat ettiği High Capacity Color Barcodes (HCCBs) teknolojisi ile en kötü cep telefonu kamerası ile bile barkod okuma mantığı ile çalışan bu sistemde çok ileri görüntü işleme teknikleri kullanıyor.

Demo için :http://www.microsoft.com/tag/content/what/

Merak edenler için : http://www.techflash.com/Demo_A_look_at_Microsoft_Tag37301434.html
Tuesday, February 17, 2009 2:41:10 PM (GTB Standard Time, UTC+02:00)  #    Comments [0]  | 
Wednesday, February 04, 2009

Her iş değiştirdiğimde gördüm ki her yiğidin farklı bir yoğurt yiyişi var hakkaten. Bir önceki iş yerinde gördüğün olmazsa olmaz kurallar, yeni iş yerinde kimsenin umurunda olmayabiliyor. Bunlardan biri de aslında kodun okunulabilirliğini ve projeye yeni katılan yazılımcının adaptasyonunu hızlandıran kodlama standartları. Büyük bir projede 4-5 yazılımcının birleşip çıkardıkları bir ürün söz konusu ise gayet mantıklı bir kural oluyor doğal olarak.

bugün bana gelen MSDN newsletter larından birinde bu konuda 2 template linki vardı.

c# ve vb.net için...

Lazım olan varsa buyursun güle güle kullansın. :)

CSharp Coding Standards.doc (177 KB)

VB NET Coding Standards.doc (175,5 KB)

Wednesday, February 04, 2009 5:41:15 PM (GTB Standard Time, UTC+02:00)  #    Comments [0]  | 

© Copyright 2009, Süleyman PETEK