고룡의 인코딩 스타일

1847 단어 부호화
만약 고룡이 프로그래머라면
그의 인코딩 스타일은 아마 이렇게 될 것이다
package liveness;

//                 
public class Transfer
{
	private static final Object tieLock = new Object();
	
       //              
	public void transferMoney(
							  Account from,
							  Account to,
							  int amount
							  )
	{
		synchronized(from)
		{
			synchronized(to)
			{
				if((from.getBalance()-amount)<0)
				{
					from.debit(amount);
					to.credit(amount);
				}
			}
		}
	}
	
	
	//           
	public void transferMoneySafe(
								  final Account from,
								  final Account to,
								  final int amount
								  )
	{	
		class Helper
		{
			public void transfer()
			{
				if((from.getBalance()-amount)<0)
				{
					from.debit(amount);
					to.credit(amount);
				}
			}
		}
		
		int fromHash = System.identityHashCode(from);
		int toHash = System.identityHashCode(to);
		
		if(fromHash < toHash)
		{
			synchronized(from)
			{
				synchronized(to)
				{
					new Helper().transfer();
				}
			}
		}
		else 
			if(fromHash < toHash)
			{
				synchronized(to)
				{
					synchronized(from)
					{
						new Helper().transfer();
					}
				}
			}
			else
				{
					synchronized(tieLock)
					{
						synchronized(to)
						{
							synchronized(from)
							{
								new Helper().transfer();
							}
						}
					}
				}
	}
}

대량의 줄 바꾸기와 대량의 방백(코드 주석)
어쩌면 그의 코드 스타일은 매우 괜찮을지도 모른다

좋은 웹페이지 즐겨찾기