Вы используете инварианты, когда Вы программируете?

Да Вы можете. Я делаю это пользующийся pythoncom библиотеками, которые приезжают включенные с ActivePython или могут быть установлены с pywin32 (Python для расширений Windows).

Это - основной каркас для простого сервиса:

import win32serviceutil
import win32service
import win32event
import servicemanager
import socket


class AppServerSvc (win32serviceutil.ServiceFramework):
    _svc_name_ = "TestService"
    _svc_display_name_ = "Test Service"

    def __init__(self,args):
        win32serviceutil.ServiceFramework.__init__(self,args)
        self.hWaitStop = win32event.CreateEvent(None,0,0,None)
        socket.setdefaulttimeout(60)

    def SvcStop(self):
        self.ReportServiceStatus(win32service.SERVICE_STOP_PENDING)
        win32event.SetEvent(self.hWaitStop)

    def SvcDoRun(self):
        servicemanager.LogMsg(servicemanager.EVENTLOG_INFORMATION_TYPE,
                              servicemanager.PYS_SERVICE_STARTED,
                              (self._svc_name_,''))
        self.main()

    def main(self):
        pass

if __name__ == '__main__':
    win32serviceutil.HandleCommandLine(AppServerSvc)

Ваш код входил бы main() method— обычно с некоторым бесконечным циклом, который мог бы быть прерван путем проверки флага, который Вы устанавливаете в SvcStop метод

5
задан Niyaz 7 November 2009 в 09:11
поделиться

2 ответа

Зависит от того, кого вы спросите - я использую инварианты просто потому, что это облегчает жизнь. Изучение инвариантов похоже на обучение слепой печати. Каждый раз, когда вы используете инвариант, вы знаете больше о своем коде. Если вы вставите инвариант как комментарий в свой цикл, он ОЧЕНЬ поможет читателю. Я бы сказал, что использование инвариантов значительно удешевляет создание и сопровождение исходного кода и дает вам возможность создавать гораздо более сложные алгоритмы, которые все еще можно поддерживать.

И в отличие от ООП, я никогда не видел, чтобы кто-то тратил свое время зря на с использованием инвариантов.

12
ответ дан 18 December 2019 в 06:51
поделиться

Я не особо думаю об инвариантах - не так много, как до / после условий. Честно говоря, мне, наверное, следует больше думать об инвариантах.

Одна вещь, о которой стоит подумать, - это неизменяемость - если вы используете объектно-ориентированный язык, но делаете типы неизменяемыми там, где это возможно, вам не нужно так сильно беспокоиться об инвариантах : если состояние допустимо для начала, оно останется действительным.

Звучит так, как будто ваш курс может немного переоценивать инварианты ... но это действительно зависит от того, что вы делаете. В одних ситуациях они подходят больше, чем в других. Может быть, ваш лектор просто их большой поклонник с большим опытом в тех областях, где они действительно полезны.

8
ответ дан 18 December 2019 в 06:51
поделиться