[]

Java - İş görüşmesinde düzgün kod

Yurtdışında bir firmanın iş görüşmesinde bir kod yazdırdılar. Aslında bir numarası olmayan, iki panelden oluşan. Soldaki panelde yer alan düğmeye bastığınızda, sağdaki panelde bir şeyler yapan bir uygulama istediler.

Ben de mümkün olduğunca düzgün yazmaya çalıştım. Bir listener class'ı tanımladım ve düğmeye basınca diğer panele bilgiyi bu sayede gönderdim falan. Panellerde gridbaglayout kullandım genel olarak vs. İsterseniz aynı kod yok ama çok benzer tarzda yazılmış bir kod var elimde, o projeyi paylaşabilirim.

Beni kabul etmediler, sorduğumda şöyle bir cevap aldım "We have done the same test with different candidates, and other people have different ways of doing this test, which was more flexible in our opinion. E.g. it was easier to add a property (instead of passing all the properties in the method) or to add a panel with less overhead."

Propertychangelistener falan kullanmayı düşündüm ama kullanmamıştım, onun dışında tam ne demek istediğini anlamadım desem yeri var. Yukarıdaki cevap dışında bir de "sadece bir paneli sana yaptırmak isteyebiliriz, daha esnek kod olmalı. Sen birinden paneli yaptırmak isteyebilirsin ondan ne istersin?" falan gibi de yorumları vardı.

Fikirleriniz paylaşırsanız sevinirim, kendimi o yönde geliştirmeye çalışayım.

Teşekkürler

 
kodu görmeden bir şey diyemem ama sanırım propertyleri tek tek geçmişsiniz parametre olarak nesneyi geçmek yerine ona takılmışlar gibi.


  • nuka cola  (31.08.16 16:44:47) 
Google drive'a zip ile koydum.

drive.google.com

Aslında öyle yapmaya çalıştım ama kodu yazdıktan sonra propertychangelistener neden kullanmadın falan dediği için onu söyledim. Tam emin değilim ama tabii ki.
  • harmonikhakaret  (31.08.16 16:49:29) 
.Net'ci olduğum için propertychangelistener'ın ne yaptığını tam bilmiyorum (adından tahmin edebiliyorum) akşam eve gidince vakit bulursam koduna göz atar yardımcı olmaya çalışırım.


  • nuka cola  (31.08.16 17:01:41) 
Person person = new Person(name, occupation,ageCategory,employmentCategory,taxId,isUs,gender);

Bu constructor yerine setter/getter veya builder kullanmanı istemiş olabilirler mi?

edit: bu kadar ufak bir şey yüzünden adam elemek de saçmaymış.

edit2: şunu da gördüm
textPanel.append(
event.getName() + ":" + event.getOccupation() + ":" + event.getAgeId() + ":" + event
.getEmployment() +
":" + event.isUSCitizen() + ":" + event.getTaxID() + ":" + event.getGender() + "\n");

burada string'i + ile concat etmek yerine stringbuilder kullanmalısın, hem daha okunabilir olur hem de performans açısından daha iyi.
  • zawisza  (31.08.16 17:04:47 ~ 17:08:03) 
- burada "preferencesDialog.setDefaultValues(username,password,port);" username,password ve port gecmek yerine direkt "preferences" objesini parametre olarak gecebilirdin. bu sayede ilerde herhangi bir paremetre degisikliginde sadece "setDefaultValues" methodunu degistirmen yeterli iken senin yazdigin kodda "MainFrame" üzerinde de degisiklik yapman gerekecek.
- Controller da FormEvent "fe" den degerleri alip mesela buradaki gibi "int ageCatId = fe.getAgeId();" bir degiskene ataman gereksiz olmus. switch icinde "switch (ageCatId)" yerine "switch (fe.getAgeId())" kullanabilirdin.
- swing framework de iyi degilim ama "// First Row", "// Next Row" ... kisimlarinin bir method icinde parametrik yapilabilir diye düsünüyorum. kod tekrari cok gibi geldi.

- MainFrame ve FormPanel constructorlar cok uzun geldi, her bir kod blogunu bir method icine atarsan okunmasi kolay olur, kodlar tekrar kullanilabilir olur. ayrica o kod blogunun ne yaptigini anlamak icin methodun ismine bakmak yeterli olur.

Isin gercegi ben de yazmis olsaydim senin gibi yazardim ya da sana benzer hatalar yapardim. Bir insan kod yazarken nerede hata yaptigini anlayamayabiliyor, bu isin dogasinda var. Kusursuz kod yoktur, herkes yazarken bir yerinde elestirilecek bir acik birakir. Ben de simdiki is yerimde yazdigim kodlari diger gelistiricilere "Code Review" icin incelettigimde bircok hata bulduklarini görüyorum. Programlama biliyoruz ama kaliteli kod yazmaki icin ögrenme sürecindeyiz ve bu sürec hic bitmeyecek sanirim. O nedenle sana su kitabi önerebilirim, ben de bu kitabi okuyorum ve her seferinde önceki yazdigim kodlarin hatalarini yüzüme vuruyor. www.amazon.com

Ayrica yazdigin koda baktigimda swing ile ilgili bazi noktalari ögrenmis oldum, paylastigin icin tesekkürler.
  • emrahday  (31.08.16 17:18:17 ~ 17:24:09) 
@zawisza; yani evet olabilirmiş. zaten dediğim gibi bu kod benim orada yazdığım kod değil ama benzer bir kod. bu kadar ufak olmamalı gerçekten.

@emrahday; kitaba hemen bakıyorum. rica ederim, ben teşekkür ederim.
  • harmonikhakaret  (31.08.16 17:50:10) 
koda detaylı bakamadım akşam da ama zaten bi kaç yanlışı arkadaşlar söylemişler. Öncelikle evet bunlar ufak detaylar ama diğer adaylar bu ufak hataları yapmadılarsa onlara öncelik vermeleri normal ki, siz çalışma izni için başvuracağınızdan diğer adaylar kadar iyi olmanız yetmez yazdığınız kodun çok daha iyi olması gereklidir.

Ayrıca yurtdışı görüşmelerinde yazdığınız kodlara mutlaka ama mutlaka unit test ekleyin. İsteseler de istemeseler de.
  • nuka cola  (01.09.16 07:27:34) 
ben bu gibi durumlarda gelistiricilerin TDD yapmasini öneriyorum. @nuca cola dedigi gibi unit testler cok önemli, bu diger adaylara göre öne cikmada yardimci olabilir. Ayrica gelistirme ve testleri yazmakdan ziyade en iyi cözümü en temiz kod ile bulmak icin TDD harika bir cözüm. ilk baslarda cok zaman aliyormus gibi gözükse de yeterli pratikle geleneksel gelistirmeden cok daha hizli oluyor. özellikle karmasik algoritmalarda. bu konuda su videoyu önerebilirim vimeo.com


  • emrahday  (01.09.16 11:42:51 ~ 11:43:06) 
1
buraya yazılanların hakları Sir Anthony Hopkins'e aittir.
yazan eden compumaster, ilgilenen eden fader
modere edenler angelus, Artibir, aychovsky, baba jo, basond, compumaster, deckard, duyulmasi gerektigi kadar, fader, fraise, groove salad, kahvegibi, kaymaktutmayansicaksut, kibritsuyu, monstro, pandispanya, robin, ron dennis
bu sitede yazılanların hiçbiri doğru değildir. site içeriği küçükler için sakıncalı olabilir. yazılardan yazarları sorumludur. kaynak göstermeden alıntılanamaz. devlet tarafından atanmış bir kurumun internet üzerinde kimin hangi bilgiye ulaşıp ulaşamayacağına karar vermesi insan haklarına aykırıdır. web siteleri kullanıcıların istekleri doğrultusunda bağlandıkları yerlerdir. kullanıcılar isterlerse bir web sitesine bağlanmayabilirler. bu güçleri ve imkanları mevcuttur. bir kullanıcı bir siteye bağlanmak istiyorsa bu onun tercihi ve hakkıdır. bağlanmak istemiyorsa bu yine onun tercihi ve hakkıdır. halkın kendisine hizmet etmesi için görevlendirdiği kurumlar hadlerini aşıp halka neye ulaşıp ulaşmayacağını bilmeyen cahil cühela muamelesi edemezler. ebeveynlerin çocuklarını sakıncalı içeriklerden koruması için çok sayıda bedava ve ücretli yazılım mevcuttur. bu yazılımlar bir web tarayıcısını kullanmaktan daha karmaşık teknik bilgi gerektirmemektedir. devletin milletini küçük düşürmesi ve ebleh yerine koyması yasaktır. Skimlinks ile linkler üzerinden yönlendirme payı alınmaktadır.