리팩터링(refactoring)

리팩터링(refactoring)
1. 정의
- 기존 코드의 설계를 개선하는 절차
- 동작(operation)을 보존하는 변환
-> 겉으로 보이는 동작을 바꾸지 않고, 이해하거나 수정하기 쉽게 소프트웨어의 내부 구조를 바꾸는 것 (Martin Fowler)

2. 리팩터링을 하는 이유
- 새로운 코드를 더 쉽게 추가할 수 있도록 하기 위해
- 기존 코드의 설계를 개선하기 위해
- 기존 코드를 더 잘 이해하기 위해
- 덜 짜증나는 코드로 만들기 위해

"Any fool can write code that a computer can understand. Good programmers write code that humans can understand.
컴퓨터가 이해하는 코드는 어느 바보나 짤 수 있다. 훌륭한 프로그래머는 사람이 이해할 수 있는 코드를 짠다." - Martin Fowler


<참고>
패턴(pattern) : 반복해 나나타는 설계 문제에 대한 표준 해법
설계 초기 단계부터 패턴을 적용하는 것보다 기존 설계를 개선하는 데 패턴을 사용하는 것이 더 낫다.

Posted by solarview

2006/07/25 22:20 2006/07/25 22:20
,
Response
No Trackback , No Comment
RSS :
http://www.solarview.net/rss/response/5

Visual Basic.NET의 구조

1. Visual Basic.NET의 소스파일에는 무엇이 들어있나?
- 확장자가 .vb인 소스코드 파일에서는 클래스를 정의
[code lang-vb]Public Class Dog
'클래스
End Class[/code]
- 모듈(module) -> 암시적으로 공유되는 클래스의 특수 형태로 볼 수 있음

2. 클래스(class) 안에는 무엇이 들어 있나?
- 메소드(method)가 한 개 이상 들어 있음
[code lang-vb]Public Class Dog
  Sub Bark()
   '메소드
End Sub
End Class[/code]

3. 메소드 안에는 무엇이 들어 있나?
- 처리할 일을 지시하는 내용이 들어있음
-> 일련의 명령문이 들어 있음
[code lang-vb]Public Class Dog
  Sub Bark()
  Statement1 '명령문
   Statement2
  End Sub
End Class[/code]

4. 클래스를 해부한다면?
비베닷넷에서는 프로그램을 실행시키기 위한 Main함수, 클래스, 폼을 지정해야 함
시작 함수로서의 Main에 대한 정의는 어떻게 하는가?
[code lang-vb]Public Class MyFirstApp
  Public Shared Sub Main()
  End Sub
End Class[/code]
콘솔프로그램을 작성하고자 한다면 다음과 같이 하면 된다.
[code lang-vb]Public Class MyFirstApp
  Public Shared Sub Main()
    Console.WriteLine("Hello, World.")'내용을 콘솔에 출력한다.
    Console.ReadLine()'사용자의 입력을 받아들인다.
  End Sub
End Class[/code]

5. Main함수를 가지고 윈도우 프로그램을 실행하려면?
1) Application.Run 메소드를 이용
[code lang-vb]Public Module StartModule
  Public Sub Main()
   Dim frm As New Form1()
   Application.Run(frm)
  End Sub
End Module[/code]
프로그램을 끝낼 때는 Application.Exit()라고 하면 된다.
2) 폼의 ShowDialog메소드를 이용
[code lang-vb]Public Module StartModule
  Public Sub Main()
   Dim frm As New Form1()
   frm.ShowDialog() 'modal window를 보여줌.
        '윈도우가 닫힐 때까지는 Main()의 다른 명령은 실행되지 않음
  End Sub
End Module[/code]
3) 폼의 Show메소드를 이용
[code lang-vb]Public Module StartModule
  Public Sub Main()
   Dim frm As New Form1()
   frm.Show() 'modeless window를 보여줌.
       'Main()가 계속 실행됨
  End Sub
End Module[/code]

6. 메소드(method)란?
1) 뭔가를 하는 것
  명령문 : 선언, 대입, 메소드 호출 등
2) 뭔가를 여러 번 반복하는 것
  순환문 : For, While
  For : 반복횟수를 알 때
  While : 반복횟수를 모르며, 탈출조건은 알 때.
3) 조건에 따라 뭔가를 하는 것
  분기문 : If/Else, Select Case

7. 그렇다면 클래스는 어떻게 설계해야 하는가?
- 클래스를 설계할 때믄 그 클래스 유형으로부터 생성되는 객체에 대해 생각한다.
객체에서 아는 것 -> 인스턴스 변수
객체에서 하는 것 -> 메소드
- 이 클래스가 무엇을 할 것인가(역할-> 메소드)를 먼저 생각한다.
[code lang-vb]Public Class Song
Dim m_Title As String '아는 것 -> 인스턴스 변수(상태)
Dim m_Artist As String
'
Sub SetTitle() '하는 것 -> 메소드(행동)
Sub SetArtist()
Sub Play()
End Class[/code]

- 클래스와 객체 사이에는 어떤 차이가 있는가?
  클래스는 객체(인스턴스)를 만들기 위한 청사진 -> 그 유형의 객체를 만드는 방법을 알려주는 역할을 한다
  클래스는 하나이나 객체는 여럿이 될 수 있다.

8. 점(.) 연산자
- 클래스 내부의 상태와 행동을 어떻게 참조/호출하는가?
- 점(.) 연산자는 객체의 상태(인스턴스 변수)와 행동(메소드)을 접근할 수 있게 해주는 역할을 한다.
[code lang-vb]Dim myDog As Dog = New Dog() '새로운 객체를 만든다.
myDog.Bark() '점 연산자를 myDog변수에 적용하여 Bark()메소드를 호출하여 그 개가 짖도록 한다.
myDog.m_Size = 40 '점 연산자를 써서 그 크기를 설정한다.[/code]

[code lang-vb]Public Class Dog
  Dim m_Size As Integer '***실제 코딩에서는 상태를 직접 바꾸는 것을 피하자. 상태는 Private으로 선언하여 숨긴다.
  Dim m_Breed As String
  Dim m_Name As String
 '
  Public Sub Bark()
     Console.WriteLine("멍멍")
  End Sub
End Class[/code]

9. 결국 비베닷넷의 프로그램은 무엇이라 할 수 있는가?
-클래스를 통해여 만들어진 객체들의 연극
- 비베닷넷 프로그램이란 객체가 다른 객체와 대화하는 것에 불과함
- 대화한다는 것은 객체에서 서로 다른 객체의 메소드를 호출하는 것을 의미함.

[code lang-vb]myDog.Bark()[/code]
-> myDog에게 Bark하라고 말함
-> myDog에게 Bark하라는 메시지를 전함
-> myDog이라는 변수로 참조할 수 있는 객체를 이용하여 Bark()라는 메소드를 호출하라는 뜻

- 메시지 = 참조변수 + 점(.)연산자 + 메소드

Posted by solarview

2006/03/25 21:32 2006/03/25 21:32
, , , ,
Response
No Trackback , No Comment
RSS :
http://www.solarview.net/rss/response/69

UML 클래스 다이어그램

클래스 다이어그램에 대한 로버트 C. 마틴의 글입니다.
제가 강의에 참고한 내용이지요.
좋은 내용입니다.
단, 영어로 작성된 문서입니다.

UML_ClassDiagrams.pdf

UML Class Diagram


Posted by solarview

2006/03/06 22:13 2006/03/06 22:13
, ,
Response
No Trackback , No Comment
RSS :
http://www.solarview.net/rss/response/2

VB.NET : 프로그래밍 가이드

비베닷넷 프로그래밍을 위한 작은 문서입니다.
옛날에 작성한 문서로 비베6.0을 덮어쓴 문서입니다.

VB_NET_V2002.pdf

vb.net 프로그래밍가이드

Posted by solarview

2002/05/17 22:04 2002/05/17 22:04
,
Response
No Trackback , No Comment
RSS :
http://www.solarview.net/rss/response/1