Q. Stateless프로그래밍이 어떻게 하는거죠?

기본 아바타 sizzflyer 2019. 01. 25. 조회수 320


가능하다면 OOP와 비교한 예제 코딩을 보여주셔서 설명 부탁드려요.

추가적으로 Golang으로 보여주시면 하지만 다른언어로도 상관은 없어요

공유하고 보상받기 ♥︎
댓글 0

1개의 답변이 있습니다.

질문자 & 큐레이터 채택
저거슨 답변자인증
BS/개발팀 2019. 01. 25 100%의 채택

딱 원하시는 부분을 찾았네요

무국적(Stateless)이란 개인의 신청서(application)가 주정부(dependent from state.)에 의존하지 않는다는 것을 의미합니다. 따라서 함수를 두 번 호출하면 항상 동일한 결과를 얻게됩니다. 이것은 인스턴스와 해당 인스턴스 변수에 따라 메소드가 없는 함수형 프로그래밍 언어에서 흔히 볼 수있는 패턴입니다.

아래의 소스는 OPP에서 사용하는거라고 하네요

# Ruby
class User
 
  # Set instance variables
  def initialize(first_name, last_name, age)
    @first_name = first_name
    @last_name = last_name
    @age = age
  end
 
  # Create reader methods to get the age
  attr_reader :age
 
  def make_older(number_of_years)
    @age += number_of_years
  end
end
 
user = User.new("Bernhard", "Støcker", 31)
# => #<User:0x007fd2cb0e6cf8 @first_name="Bernhard", @last_name="Støcker", @age=31>
 
user.age
# => 31
 
user.make_older(5)
# => 36
 
user.age
# => 36

아래는 stateless에서의 스크립트입니다

# Elixir
defmodule User do
  defstruct first_name: nil,
            last_name: nil,
            age: nil
 
  def age(user)
    user.age
  end
 
  def make_older(user, number_of_years)
    Map.put(user, :age, number_of_years)
  end
end
 
user = %User{first_name: "Bernhard", last_name: "Støcker", age: 31}
# => %User{first_name: "Bernhard", last_name: "Støcker", age: 31}
 
user.age
# => 31
 
make_older(user, 5)
# => %User{first_name: "Bernhard", last_name: "Støcker", age: 36}
 
user.age(user)
# => 31

출처 - https://www.quora.com/What-is-stateless-programming-and-what-are-some-examples

댓글 0