본문 바로가기
카테고리 없음

[vb.net] "하드코딩"과 "소프트코딩"(로딩)

by IT HUB 2022. 6. 29.
728x90
반응형
오래간만에 질문이 올라온 글을 보다가 아래와 같은 소스를 발견하였다.​
 
        Select Case m_cmbSaveAs.Text
            Case "*.bmp"
                m_bitmap.Save(strFileName, ImageFormat.Jpeg)
            Case "*.jpg"
                m_bitmap.Save(strFileName, ImageFormat.Jpeg)
            Case "*.gif"
                m_bitmap.Save(strFileName, ImageFormat.Gif)
            Case "*.tif"
                m_bitmap.Save(strFileName, ImageFormat.Tiff)
        End Select
 
이와 같은 소스를 아래처럼 줄일 수 있다
 
Dim extension As String = IO.Path.GetExtension(strFileName).ToLower.Replace("jpg""jpeg")
Dim imgFormat As ImageFormat = CType(GetType(ImageFormat).GetProperty(extension, BindingFlags.[PublicOr BindingFlags.[Static] Or BindingFlags.IgnoreCase).GetValue(NothingNothing), ImageFormat)
m_bitmap.Save(strFileName, imgFormat)
 
 
 
둘 다 장단점이 있겠지만 난 아래 방법을 선호한다.
 
무엇보다 확장자 추가에 따른 대응이 쉽다는 장점이 있다
 
위 소스코드는 이미지 형식을 추가할 경우 더 많은 소스코드 수정이 들어간다.
반응형

댓글