Re: [JUG-Indonesia] Re: Lebih efesien mana ? If else atau try catch ?

2009-09-09 Terurut Topik Endy Muhardin
Pemilihan if-else atau try-catch seharusnya bukan berdasarkan kriteria
performance.
Tapi lebih ke business case dan programming contract.


Checked exception (oleh karena itu harus di catch atau throws)
digunakan untuk 'memaksa' pemanggilnya menghandle error tsb.

Saya biasa pakai seperti ini

public void transferUang(Account asal, Account tujuan)
throws AccountNotExistException, AccountBlockedException,
InsufficientFundException;

Dengan demikian, kode program yang memanggil method transferUang tersebut
(biasanya kode di sisi UI atau messaging workflow)
diharuskan menghandle-nya.
Terserah mau menampilkan pesan error, menulis log, return response
code tertentu, whatever.

Pemakaian checked exception membuat kode jadi lebih readable.

-- 
Endy Muhardin
http://endy.artivisi.com
Y! : endymuhardin
-- life learn contribute --


Re: [JUG-Indonesia] Re: Lebih efesien mana ? If else atau try catch ?

2009-09-09 Terurut Topik Hendry Luk
Checked exception itu idenya luhur, tapi pada prakteknya flawed.

1. Inheritance
Base-class/interface itu gak pernah bisa tau subclass apa yang bakal
implement dia. Ngasih assumption tentang exception yang bisa/gak bisa dia
throw itu mestinya bukan responsibility base-class. Misalnya class
EntityRepository base-class, gak make sense buat dia define throw
SqlException (database-subclass), ato IOException (file-system subclass),
ato RemoteException (WS/REST). Base class tau terlalu banyak.
Dan juga yang paling common adalah kalo gw ketemu getter/setter yang gak
throw apa2, tapi mesti gw extend dengan smart implementation di dalemnya
(misalnya caching/lazy-load/security), dan sekarang lu stuck dengan no
exception restriction.
Ini juga termasuk saat ngedecorate ordinary classes dengan dynamic proxy
yang infrastructure-specific. Lu tiba2 mesti struggle cari cara supaya bisa
bubble up infrastructure-related exceptions ini ke atas.
Message gw adalah, lu gak bisa antisipasi class yang hari ini gak throw
apa2, besok bakal diextend oleh class laen dengan implementasi berbeda.

2. Exception wrapping
Ini yang nambahin noise dimana2. Lu mesti anticipate bahwa implementation lu
bakal throw some sort of exceptions. Jadi lu define semua method lu supaya
throw custom exception. Dan tiap exception di tiap method bakal lu bungkus
ke exception ini. Pertama, ini beats the purpose dari checked exception in
the first place. Kalo tiap method lu jadi bisa throw exception apa ajah
(tapi dibungkus), apa bedanya dengan unchecked exception? Kedua, exception
yang dibungkus itu bikin susah buat lu supaya bisa catch specific type of
exception. Misalnya, on network-exception then retry seluruh transaction.
Tapi kalo sql-exception, lu mo langsung abort.

3. Rethrow
Kadang lu pengen punya generic policy buat handle segala jenis exception
sebelom di bubble up. Ini yang gw mau:
public void someMethod() throws ExceptionA, ExceptionB, ExceptionC,
ExceptionD
{
try
{
// some operation
}
catch(Exception e)
{
// handle something
throw e; //bubble up
}
}
Tapi karna checked exception, gw dipaksa buat repeat myself dengan code
noise yang ugly banget.
public void someMethod() throws ExceptionA, ExceptionB, ExceptionC,
ExceptionD
{
try
{
// some operation
}
catch(ExceptionA e)
{
// handle something
throw e; //bubble up
}
catch(ExceptionB e)
{
// handle something exactly same way
throw e; //bubble up
}
catch(ExceptionC e)
{
// handle something exactly same way
throw e; //bubble up
}
catch(ExceptionD e)
{
// handle something exactly same way
throw e; //bubble up
}
}
Code noise yang violate DRY banget... Tiap catch block isinya sama semua.

Definisi code noise adalah, code yang disitu gak buat nambahin value apa2,
tapi cuma mesti duduk disana stupidly buat bikin compiler seneng.


2009/9/9 Thomas Wiradikusuma wiradikusuma.mi...@gmail.com



 OOT, tapi gw kasih insight aja IMO.

 pada awalnya, desainer bahasa Java sengaja membuat Exception itu
 checked (kecuali RuntimeException)
 supaya developer aware dg exception dan menghandlenya properly. mereka
 pikir, repot dikit gpp, yg penting selamet.

 nah sialnya, in practice banyak yg ogah ngurusin exception, akhirnya
 dilempar2 terus ke atas atau cuma ditelen.
 jadinya too much boilerplate. mulai kembali deh ke tren unchecked.

 contohnya, di Groovy, anaknya java, checked exception java dibungkus
 jadi unchecked.


 
 salam hangat,
 Thomas Wiradikusuma
 Twitter: http://www.twitter.com/wiradikusuma
 Blog: http://www.jroller.com/wiradikusuma

 On Sep 9, 2009, at 1:12 AM, in_harmonia wrote:

  Sori agak OOT, tapi terlepas dari good practice atau bukan, bukannya
  Java punya checked exception yang artinya pengecualian yang
  diharapkan :D
 
  --- In jug-indonesia@yahoogroups.com jug-indonesia%40yahoogroups.com,
 Daniel Baktiar dbakt...@...
  wrote:
 
  sebaiknya pakai if else, kalau tidak salah exception handling jauh
  (beberapa
  puluh atau ratus kali) lebih lambat.dan exception dibuat benar2
  untuk hal
  yang pengecualian, bukan yang diharapkan.
 
  kalau dalam hal ini definisi mapping hibernate membolehkan adanya
  null,
  berarti nilai null diharapkan dan bukan pengecualian.

  



Re: [JUG-Indonesia] Re: Lebih efesien mana ? If else atau try catch ?

2009-09-09 Terurut Topik Daniel Baktiar
this is assuming that what i wrote is a 'premature optimization' which is
incorrect.
using if-else block is a language construct. the compiler will optimize it
according to its (compiler's) discretion. the jvm will optimize it according
to its (jvm's) discretion.

using try-catch block, by law, required to carry the whole stack in the
object.

advising not to use bulldozer to kill a fly, is not an example of the
'premature optimization'.

2009/9/9 ie_khing ie_kh...@yahoo.com





 In DonaldKnuth's paper StructuredProgrammingWithGoToStatements, he wrote:
 Programmers waste enormous amounts of time thinking about, or worrying
 about, the speed of noncritical parts of their programs, and these attempts
 at efficiency actually have a strong negative impact when debugging and
 maintenance are considered. We should forget about small efficiencies, say
 about 97% of the time: premature optimization is the root of all evil.

 semoga bermanfaat

 --- In jug-indonesia@yahoogroups.com jug-indonesia%40yahoogroups.com,
 Daniel Baktiar dbakt...@... wrote:
 
  sebaiknya pakai if else, kalau tidak salah exception handling jauh
 (beberapa
  puluh atau ratus kali) lebih lambat.dan exception dibuat benar2 untuk hal
  yang pengecualian, bukan yang diharapkan.
 
  kalau dalam hal ini definisi mapping hibernate membolehkan adanya null,
  berarti nilai null diharapkan dan bukan pengecualian.
 
  2009/9/1 Harry Christian harr...@...

 
  
  
   Hi JUGers,
  
   Mau tanya nih. Saya mengalami masalah klasik yaitu Null Pointer.
  
   Nah jadi ceritanya saya ada POJO yang berelasi dengan object lain.
  
   Contohnya :
   private Employee emp;
   private String deptName;
  
   public void setDeptName (String deptName)
   {
   // Cara 1
   if(emp == null) this.deptName = deptName;
   else if(emp.getDepartment == null) this.deptName = deptName;
   else emp.getDepartment.setName(deptName);
  
   // Cara 2
   try
   {
   emp.getDepartment.setName(deptName);
   } catch (Exception e) {return;}
   }
  
   public String getDeptName ()
   {
   // Cara 1
   if(emp == null) return deptName;
   if(emp.getDepartment == null) return deptName;
   else emp.getDepartment.getName();
  
   // Cara 2
   try
   {
   emp.getDepartment.getName();
   } catch (Exception e) {return null;}
   }
  
   Inti pertanyaan saya lebih efesien dan lebih cepat mana antara cara 1
   (if else) ataukah cara 2 (try catch) ?
  
   --
   ==
   Thanks  Best Regards
  
   Harry Christian
  
   YM : callme_harry
   Skype : harry_christian
   Facebook : http://www.facebook.com/profile.php?id=696095562
   Blog : http://www.harry-christian.blogspot.com
   ===
  
  
 
 
 
  --
  Daniel Baktiar
  Senior JEE* Monkey -- willing to work hard in the Java beans brewery for
 a
  big bunch of bananas (http://dbaktiar.wordpress.com)
 

  




-- 
Daniel Baktiar
Senior JEE* Monkey -- willing to work hard in the Java beans brewery for a
big bunch of bananas (http://dbaktiar.wordpress.com)


[JUG-Indonesia] Re: Lebih efesien mana ? If else atau try catch ?

2009-09-08 Terurut Topik ie_khing


In DonaldKnuth's paper StructuredProgrammingWithGoToStatements, he wrote: 
Programmers waste enormous amounts of time thinking about, or worrying about, 
the speed of noncritical parts of their programs, and these attempts at 
efficiency actually have a strong negative impact when debugging and 
maintenance are considered. We should forget about small efficiencies, say 
about 97% of the time: premature optimization is the root of all evil. 

semoga bermanfaat



--- In jug-indonesia@yahoogroups.com, Daniel Baktiar dbakt...@... wrote:

 sebaiknya pakai if else, kalau tidak salah exception handling jauh (beberapa
 puluh atau ratus kali) lebih lambat.dan exception dibuat benar2 untuk hal
 yang pengecualian, bukan yang diharapkan.
 
 kalau dalam hal ini definisi mapping hibernate membolehkan adanya null,
 berarti nilai null diharapkan dan bukan pengecualian.
 
 2009/9/1 Harry Christian harr...@...
 
 
 
  Hi JUGers,
 
  Mau tanya nih. Saya mengalami masalah klasik yaitu Null Pointer.
 
  Nah jadi ceritanya saya ada POJO yang berelasi dengan object lain.
 
  Contohnya :
  private Employee emp;
  private String deptName;
 
  public void setDeptName (String deptName)
  {
  // Cara 1
  if(emp == null) this.deptName = deptName;
  else if(emp.getDepartment == null) this.deptName = deptName;
  else emp.getDepartment.setName(deptName);
 
  // Cara 2
  try
  {
  emp.getDepartment.setName(deptName);
  } catch (Exception e) {return;}
  }
 
  public String getDeptName ()
  {
  // Cara 1
  if(emp == null) return deptName;
  if(emp.getDepartment == null) return deptName;
  else emp.getDepartment.getName();
 
  // Cara 2
  try
  {
  emp.getDepartment.getName();
  } catch (Exception e) {return null;}
  }
 
  Inti pertanyaan saya lebih efesien dan lebih cepat mana antara cara 1
  (if else) ataukah cara 2 (try catch) ?
 
  --
  ==
  Thanks  Best Regards
 
  Harry Christian
 
  YM : callme_harry
  Skype : harry_christian
  Facebook : http://www.facebook.com/profile.php?id=696095562
  Blog : http://www.harry-christian.blogspot.com
  ===
   
 
 
 
 
 -- 
 Daniel Baktiar
 Senior JEE* Monkey -- willing to work hard in the Java beans brewery for a
 big bunch of bananas (http://dbaktiar.wordpress.com)





[JUG-Indonesia] Re: Lebih efesien mana ? If else atau try catch ?

2009-09-08 Terurut Topik in_harmonia
Sori agak OOT, tapi terlepas dari good practice atau bukan, bukannya Java punya 
checked exception yang artinya pengecualian yang diharapkan :D

--- In jug-indonesia@yahoogroups.com, Daniel Baktiar dbakt...@... wrote:

 sebaiknya pakai if else, kalau tidak salah exception handling jauh (beberapa
 puluh atau ratus kali) lebih lambat.dan exception dibuat benar2 untuk hal
 yang pengecualian, bukan yang diharapkan.
 
 kalau dalam hal ini definisi mapping hibernate membolehkan adanya null,
 berarti nilai null diharapkan dan bukan pengecualian.
 
 2009/9/1 Harry Christian harr...@...
 
 
 
  Hi JUGers,
 
  Mau tanya nih. Saya mengalami masalah klasik yaitu Null Pointer.
 
  Nah jadi ceritanya saya ada POJO yang berelasi dengan object lain.
 
  Contohnya :
  private Employee emp;
  private String deptName;
 
  public void setDeptName (String deptName)
  {
  // Cara 1
  if(emp == null) this.deptName = deptName;
  else if(emp.getDepartment == null) this.deptName = deptName;
  else emp.getDepartment.setName(deptName);
 
  // Cara 2
  try
  {
  emp.getDepartment.setName(deptName);
  } catch (Exception e) {return;}
  }
 
  public String getDeptName ()
  {
  // Cara 1
  if(emp == null) return deptName;
  if(emp.getDepartment == null) return deptName;
  else emp.getDepartment.getName();
 
  // Cara 2
  try
  {
  emp.getDepartment.getName();
  } catch (Exception e) {return null;}
  }
 
  Inti pertanyaan saya lebih efesien dan lebih cepat mana antara cara 1
  (if else) ataukah cara 2 (try catch) ?
 
  --
  ==
  Thanks  Best Regards
 
  Harry Christian
 
  YM : callme_harry
  Skype : harry_christian
  Facebook : http://www.facebook.com/profile.php?id=696095562
  Blog : http://www.harry-christian.blogspot.com
  ===
   
 
 
 
 
 -- 
 Daniel Baktiar
 Senior JEE* Monkey -- willing to work hard in the Java beans brewery for a
 big bunch of bananas (http://dbaktiar.wordpress.com)





Re: [JUG-Indonesia] Re: Lebih efesien mana ? If else atau try catch ?

2009-09-08 Terurut Topik Thomas Wiradikusuma
OOT, tapi gw kasih insight aja IMO.

pada awalnya, desainer bahasa Java sengaja membuat Exception itu  
checked (kecuali RuntimeException)
supaya developer aware dg exception dan menghandlenya properly. mereka  
pikir, repot dikit gpp, yg penting selamet.

nah sialnya, in practice banyak yg ogah ngurusin exception, akhirnya  
dilempar2 terus ke atas atau cuma ditelen.
jadinya too much boilerplate. mulai kembali deh ke tren unchecked.

contohnya, di Groovy, anaknya java, checked exception java dibungkus  
jadi unchecked.


salam hangat,
Thomas Wiradikusuma
Twitter: http://www.twitter.com/wiradikusuma
Blog: http://www.jroller.com/wiradikusuma

On Sep 9, 2009, at 1:12 AM, in_harmonia wrote:

 Sori agak OOT, tapi terlepas dari good practice atau bukan, bukannya  
 Java punya checked exception yang artinya pengecualian yang  
 diharapkan :D

 --- In jug-indonesia@yahoogroups.com, Daniel Baktiar dbakt...@...  
 wrote:

 sebaiknya pakai if else, kalau tidak salah exception handling jauh  
 (beberapa
 puluh atau ratus kali) lebih lambat.dan exception dibuat benar2  
 untuk hal
 yang pengecualian, bukan yang diharapkan.

 kalau dalam hal ini definisi mapping hibernate membolehkan adanya  
 null,
 berarti nilai null diharapkan dan bukan pengecualian.



Re: [JUG-Indonesia] Re: Lebih efesien mana ? If else atau try catch ?

2009-09-08 Terurut Topik siagianfaber
in_harmonia wrote:
Sori agak OOT, tapi terlepas dari good practice atau bukan, bukannya Java punya 
checked exception yang artinya pengecualian yang diharapkan

Me:
Gimana kalau diganti jadi pengecualian yang telah diprediksi dan diantisipasi 
sejak awal? :D


Powered by Telkomsel BlackBerry®



Kalau mau keluar dari mailing list ini, caranya kirim sebuah email ke 
jug-indonesia-unsubscr...@yahoogroups.com.

Jangan lupa, website JUG Indonesia adalah http://www.jug.or.id

Yahoo! Groups Links

* To visit your group on the web, go to:
http://groups.yahoo.com/group/jug-indonesia/

* Your email settings:
Individual Email | Traditional

* To change settings online go to:
http://groups.yahoo.com/group/jug-indonesia/join
(Yahoo! ID required)

* To change settings via email:
mailto:jug-indonesia-dig...@yahoogroups.com 
mailto:jug-indonesia-fullfeatu...@yahoogroups.com

* To unsubscribe from this group, send an email to:
jug-indonesia-unsubscr...@yahoogroups.com

* Your use of Yahoo! Groups is subject to:
http://docs.yahoo.com/info/terms/



Re: [JUG-Indonesia] Re: Lebih efesien mana ? If else atau try catch ?

2009-09-07 Terurut Topik Belajar Pemrograman
Kalo urusannya dengan file, I/O, thread memang try/catch menjadi
keharusan. Alasannya karena kesalahan bisa terjadi di luar kontrol
program kita, makanya namanya exception control, bukan flow control.
Dari segi performance jelas if-then-else cuma butuh waktu 1 processor
cycle untuk pindah dari satu kondisi ke kondisi lain, sementara try
catch harus melalui beberapa stack operation yang tentunya memakan
waktu lebih lama.

Di bahasa D malah exception control ini dimodifikasi sedemikian rupa,
karena konsekuensi dari try/catch bisa lebih kompleks dari yang
dituliskan. Berikut kritik try/catch/finally dari bahasa D.

http://www.digitalmars.com/d/2.0/errors.html
http://www.digitalmars.com/d/2.0/exception-safe.html

Best regards,
Yasri

2009/9/2 jancrot janc...@yahoo.com:


 -- really ? ini best practice belajar sendiri atau ada yang ngasih
 tahu seperti itu ?

 Belajar sendiri. Kalau anda pernah buat aplikasi skala besar dengan banyak
 sekali masalah seperti...
 - table setting
 - file setting
 - baca file dalam format A sesuai file-setting-nya lalu parsing ke format B
 yang sudah disesuaikan dengan table setting
 - file yang diparse dikirim via FTP atau ditaruh via samba..
 - file yang sudah dikirim ke server dibaca oleh database dan disimpan ke
 table temporary
 - Invoke web service untuk parameter validasi bisnis
 - isi table temporary divalidasi sesuai dengan parameter bisnis
 - lalu kalau data tidak valid harus di-reject dengan alasan yang sesuai
 - dsb

 Maka anda pasti paham apa yang saya maksud ;)

 


Re: [JUG-Indonesia] Re: Lebih efesien mana ? If else atau try catch ?

2009-09-07 Terurut Topik Andrian Kurniady
Exception processing mestinya emang lebih lambat, soalnya perlu proses
stacktracenya buat disertakan bersama Exceptionnya...
Tapi berapa x lambatnya gw nggak yakin hehe...

-Kurniady

2009/9/2 xsalefter xsalef...@yahoo.com



 Afaik, dulu pernah ada dosen gw yang bilang kalo try-catch itu 10x lebih
 lambat daripada if-else. Tapi ga tau juga, belum pernah membuktikan secara
 menyeluruh.

 Tapi IMO kok code 1 dan code 2 di bawah sepertinya kayak beda tujuan yah?


  public void setDeptName (String deptName)
  {
  // Cara 1
  if(emp == null) this.deptName = deptName;
  else if(emp.getDepartment == null) this.deptName = deptName;
  else emp.getDepartment.setName(deptName);
 
  // Cara 2
  try
  {
  emp.getDepartment.setName(deptName);
  } catch (Exception e) {return;}
  }
 
  public String getDeptName ()
  {
  // Cara 1
  if(emp == null) return deptName;
  if(emp.getDepartment == null) return deptName;
  else emp.getDepartment.getName();
 
  // Cara 2
  try
  {
  emp.getDepartment.getName();
  } catch (Exception e) {return null;}
  }
 
 
  Inti pertanyaan saya lebih efesien dan lebih cepat mana antara cara 1
  (if else) ataukah cara 2 (try catch) ?

  



[JUG-Indonesia] Re: Lebih efesien mana ? If else atau try catch ?

2009-09-07 Terurut Topik Moch Nasrullah
fyi, c# tidak punya checked exception krn ada 2 isu utama: scalability
and versionability
berikut wwncara antara Bruce Eckel  Anders Hejlsberg
http://www.artima.com/intv/handcuffs.html

-- 
regards,
-nasrul

--Menikmati Hidup Mempersembahkan yang Terbaik (Nashroulloh)--


[JUG-Indonesia] Re: Lebih efesien mana ? If else atau try catch ?

2009-09-01 Terurut Topik xsalefter
Afaik, dulu pernah ada dosen gw yang bilang kalo try-catch itu 10x lebih lambat 
daripada if-else. Tapi ga tau juga, belum pernah membuktikan secara menyeluruh.

Tapi IMO kok code 1 dan code 2 di bawah sepertinya kayak beda tujuan yah?

 public void setDeptName (String deptName)
 {
// Cara 1
if(emp == null) this.deptName = deptName;
else if(emp.getDepartment == null) this.deptName = deptName;
else emp.getDepartment.setName(deptName);
 
// Cara 2
try
{
   emp.getDepartment.setName(deptName);
} catch (Exception e) {return;}
 }
 
 public String getDeptName ()
 {
// Cara 1
if(emp == null) return deptName;
if(emp.getDepartment == null) return deptName;
else emp.getDepartment.getName();
 
// Cara 2
try
{
   emp.getDepartment.getName();
} catch (Exception e) {return null;}
 }
 
 
 Inti pertanyaan saya lebih efesien dan lebih cepat mana antara cara 1
 (if else) ataukah cara 2 (try catch) ?





[JUG-Indonesia] Re: Lebih efesien mana ? If else atau try catch ?

2009-09-01 Terurut Topik jancrot
 Inti pertanyaan saya lebih efesien dan lebih cepat mana antara cara 1
 (if else) ataukah cara 2 (try catch) ?
 

Kalo efisien mungkin lebih baik if else. (Mungkin lho ya..). Detail pastinya 
saya belum pernah buktiin.

Tapi.. best practice yang saya peroleh sampai saat ini adalah try catch.

Penjelasan kasarnya begini.. Kalo pada permasalahan yang kompleks dimana banyak 
variabel yang mempengaruhi (jaringan, user/pass salah, file cacat dsb), maka if 
else suatu saat akan gagal. Karena seteliti-telitinya programmer membuat 
program, pasti akan ada miss.

Selain itu.. ketika if else-nya udah banyak banget.. source code akan susah 
dibaca/dimaintain. Pada suatu ketika akan muncul variabel tidak terduga yang 
belum pernah ada sebelumnya. Misalnya.. ada data yang tidak sengaja diubah 
nilainya. Apa anda masih mau buka source code (yang sudah penuh dengan if-else) 
lalu menambah satu lagi if else??

Dengan try catch.. programmer hanya meng-handle kasus dimana data dan input dan 
semua variable lainnya benar. Jika satu saja dari variabel-variabel itu ada 
yang tidak benar akan langsung di-catch dan programmer akan dengan mudah 
memberikan jawaban default. Misalnya -1 untuk integer, string kosong untuk 
string dsb...

Dengan cara seperti ini, code menjadi lebih mudah dimaintain dan tahan banting 
terhadap variabel-variabel tidak terduga.



Re: [JUG-Indonesia] Re: Lebih efesien mana ? If else atau try catch ?

2009-09-01 Terurut Topik Harry Christian
@Yudhi
Mmg ada kaitan dengan LazyLoader :p
Cuma penasaran aja sih pengen tau lebih efesien yg mana. Soalnya gerah
juga liat if else banyak banget.

@xsalefter
Tujuannya sama cuma mau ngeset object.
Cara 1 if else nya itu cuma utk mencegah null pointer aja. Tujuan
akhirnya cuma emp.getDepartment.setName(deptName);

@Edward Yakop
Lagi dipelajari wiki nya. Thx masukannya.

@jancrot
Saya sebenarnya mengharapkan jawaban try catch lebih efesien. Cuma
baru kamu yang bilang begitu lol. Karena saya sependapat dengan alasan
yang kamu bilang. If else nya banyak banget blm lagi kalo muncul if
else baru lagi.

@abangkis
Ada kemungkinan ga yah kalo catch(Exception e) begini dia bakal
mengecek semua exception yang ada ? (NullPointer, SQLException dll).



On 9/1/09, abangkis abang...@gmail.com wrote:
 2009/9/2 jancrot janc...@yahoo.com:


 Inti pertanyaan saya lebih efesien dan lebih cepat mana antara cara 1
 (if else) ataukah cara 2 (try catch) ?


 Kalo efisien mungkin lebih baik if else. (Mungkin lho ya..). Detail
 pastinya
 saya belum pernah buktiin.

 Tapi.. best practice yang saya peroleh sampai saat ini adalah try catch.

 -- really ? ini best practice belajar sendiri atau ada yang ngasih
 tahu seperti itu ?

 dari segi bahasa sendiri kedua operator ini sudah punya positioning
 yang jelas. If - Else adalah operator logic. Sedangkan
 try-catch-exception adalah metode di java untuk exception handling,
 yang dulu dibahasa2 lampau di handle biasanya dengan cara  mencek
 apakah return method tersebut null atau tidak. Dengan exception
 handling cara pengecekan ini jadi lebih bersih dan elegan.

 Kalau di kaitkan dengan Software engineering, di use case biasanya ada
 normal flow dan exception flow, nah exception flow ini yang biasanya
 ada di antara tanda kurung kurawal untuk catch.

 Apakah try-catch bisa dipergunakan untuk bisnis logic ? Jawabannya
 bisa, tetapi resiko di tanggung sendiri dan harap dipahami. Karena
 operator itu memang tidak dibuat intended untuk dipergunakan sebagai
 application logic. Mungkin bisa dianalogikan seperti mukul paku ke
 dinding pake palu vs pake obeng.

 Kemungkinan besar efeknya memang di operation cost, dan optimasi
 otomatis dari si JVM. Kalau kerugian diluar itu saya kurang paham.



 Cheers,

 Abangkis



-- 
==
Thanks  Best Regards

Harry Christian

YM  :  callme_harry
Skype  :  harry_christian
Facebook : http://www.facebook.com/profile.php?id=696095562
Blog:  http://www.harry-christian.blogspot.com
===


Re: [JUG-Indonesia] Re: Lebih efesien mana ? If else atau try catch ?

2009-09-01 Terurut Topik abangkis
2009/9/2 Harry Christian harr...@gmail.com:

 @jancrot
 Saya sebenarnya mengharapkan jawaban try catch lebih efesien. Cuma
 baru kamu yang bilang begitu lol. Karena saya sependapat dengan alasan
 yang kamu bilang. If else nya banyak banget blm lagi kalo muncul if
 else baru lagi.

 @abangkis
 Ada kemungkinan ga yah kalo catch(Exception e) begini dia bakal
 mengecek semua exception yang ada ? (NullPointer, SQLException dll).


-- mungkin perlu disamakan persepsi dulu pendapat kamu mengenai
efisien. Mungkin yang kamu lihat sebagai efisien itu adalah gak ribet
waktu nulis code-nya :). Kalo dari sisi saya efisien adalah kode yang
bersih, mudah dipahami dan punya performance yang bagus.

Tepat sekali, Catch(Exception e) akan menangkap semua exception yang
dilemparkan. Kembali ke persepsi tadi, mungkin ini jadi kelihatan
paling gampang. Tapi ada istilah exception yang seperti ini seperti
blackhole, karena tidak bisa membedakan siapa yang melempar exception
tersebut. Efeknya, kalau terjadi exception kita tidak bisa dengan
cepat menentukan letak kesalahan. Contohnya kalau kamu pake MVC,
begitu lihat SQLException kamu bisa langsung tahu bahwa kesalahan
terletak di layer yang menhandle database akses.

Untuk kasus if-else yang banyak, tergantung dilihat dulu kasusnya,
apakah karena banyak flow di dalam satu kelas atau memang dari
variabel-nya yang memiliki banyak opsi. Kalau dari flow, bisa di pecah
jadi kelas-kelas yang berbeda. Di java itu class/object adalah first
class citizen, jadi jangan ragu untuk bikin kelas banyak2.

Lebih lanjut silahkan baca buku mengenai software engineering , design
pattern, java performance.

Cheers,

Abangkis


[JUG-Indonesia] Re: Lebih efesien mana ? If else atau try catch ?

2009-09-01 Terurut Topik jancrot
 -- really ? ini best practice belajar sendiri atau ada yang ngasih
 tahu seperti itu ?

Belajar sendiri. Kalau anda pernah buat aplikasi skala besar dengan banyak 
sekali masalah seperti...
- table setting
- file setting
- baca file dalam format A sesuai file-setting-nya lalu parsing ke format B 
yang sudah disesuaikan dengan table setting
- file yang diparse dikirim via FTP atau ditaruh via samba..
- file yang sudah dikirim ke server dibaca oleh database dan disimpan ke table 
temporary
- Invoke web service untuk parameter validasi bisnis
- isi table temporary divalidasi sesuai dengan parameter bisnis
- lalu kalau data tidak valid harus di-reject dengan alasan yang sesuai
- dsb

Maka anda pasti paham apa yang saya maksud ;)