Sirius3 hat geschrieben: ↑Montag 20. März 2023, 22:39
Wenn man ein Programm hat, das 28770 Zeilen hat, dann ist da sicher was falsch. Aus Deinen Ausführungen werde ich aber nicht schlau.
Das Code-Fragment, den Du zeigst, hält sich an keine Namenskonvention, hat keinerlei Inhalt und besteht nur aus durchnummierierten generischen Wörtern, was ihn nochmals schwieriger zu verstehen macht.
Kannst Du ein Minimalbeispiel posten, das tatsächliche Funktionalität hat und den typischen Aufbau des Programms zeigt.
Hier habe ich nun einmal den verkürzten Auszug der
__init__:
Code: Alles auswählen
def __init__(self):
# Angabe des Gerätes für debugLog
UIDevice = ObjCClass('UIDevice')
device = UIDevice.currentDevice()
self.DEVICE_VERSION = str(device.systemVersion())
self.DEVICE_TYPE = str(device.localizedModel())
self.DEVICE_OS = str(device.systemName())
self.DEVICE_ID = str(device.identifierForVendor())
# Pfadangabe für die Log Ausgaben...
self.loggingPath = os.path.join(os.path.dirname(sys.argv[0]), 'Protokollierungen')
# Angabe ob Abfragen erstellt werden sollten
self.TABLE_SCHEMA__QUERY = None
# Auswahl der Datenbank
self.selectDatabase()
# Benötigt für die Close Funktion
self.safeModeMateriallist__APPCLOSE = False
self.safeModeCustomerSetting__APPCLOSE = False
self.safeModeDatanormEntry__APPCLOSE = False
self.safeModeManufacturer__APPCLOSE = False
self.safeModeMateriallistCSV__APPCLOSE = False
# Bildschirmgröße
self.WIDTH, self.HEIGHT = self.get_screen_size()
self.DEVICE = self.DEVICE_TYPE
# Unzulässige Zeichen in Kunden und Projektnamen
self.forbiddenChars_all = set('<>:"/\|?*!')
# Unzulässige Zeichen in Projektnamen (als Satz Ende)
self.forbiddenChars_firstLastChar = set('.')
# Hauptbildschirm Ansicht des Inhaltes
self.main_content = ui.View(frame=self.bounds, flex='WH')
self.add_subview(self.main_content)
# Darstellung und Anischt (Begrenzung) der Buttons
#self.button_area = style(ui.View(name='button_area', bg_color='')) #TODO ## style für Die Umrandung schauen was ich da machen werde ##
self.button_area = ui.View(name='button_area')
dock(self.button_area).bottom(self.main_content, At.TIGHT)
# Ist für die Höhenanpassung der Button Darstellung
at(self.button_area).height = at(self.button_area).fit_height
# Angaben der Klassen Ansicht
self.name = 'Barcode Scanner'
self.background_color = getColor('MAIN')
self.present('fullscreen', hide_title_bar=True) if self.DEVICE == 'iPad' else self.present('fullscreen', hide_title_bar=True, orientations=['portrait'])
# Anzeige des Contents
self.content_area = ui.View(name='content_area')
dock(self.content_area).top(self.main_content, At.TIGHT)
at(self.content_area).bottom = at(self.button_area).top - At.TIGHT
self.StartPage()
StartPage:
Code: Alles auswählen
def StartPage(self):
# Button für die Öffnung der sidebar der Kundenprofile
self.checkCloseButton = size_to_fit(getButton_area(ui.Button(name='checkCloseButton'), 'checkCloseButton', self.DEVICE, 1))
self.checkCloseButton.action = self.checkCloseButton__ACTION_Button
self.checkCloseButton.width = self.checkCloseButton.height
dock(self.checkCloseButton).top_right(self.main_content)
# Button für die Öffnung der sidebar der Kundenprofile
self.sidebarRegistrationButton = size_to_fit(getButton_area(ui.Button(name='sidebarRegistrationButton'), 'sidebarRegistrationButton', self.DEVICE, 1))
self.sidebarRegistrationButton.enabled = False
self.sidebarRegistrationButton.action = self.userSidebar_openClose
self.sidebarRegistrationButton.width = self.sidebarRegistrationButton.height
dock(self.sidebarRegistrationButton).bottom_left(self.button_area)
# Anzeige sowie Darstellung der Sidebar (Benutzer)
self.sidebarUserView = style(ui.View(name='sidebarUserView', width=sidebarSetWidth('sidebarUserView', self.DEVICE, self.WIDTH)))
self.add_subview(self.sidebarUserView)
at(self.sidebarUserView).top = at(self.main_content).top
at(self.sidebarUserView).bottom = at(self.main_content).bottom
at(self.sidebarUserView).right = at(self.main_content).left
# User Sidebar Schließen
self.userSidebarCloseButton = size_to_fit(getButton_area(ui.Button(name='userSidebarCloseButton'), 'sidebarCloseButton', self.DEVICE, 1))
self.userSidebarCloseButton.action = self.userSidebar_openClose
dock(self.userSidebarCloseButton).bottom_center(self.sidebarUserView)
# Ist für die Höhenanpassung der Button Darstellung
at(self.button_area).height = at(self.button_area).fit_height
self.regUserLabel = size_to_fit(getLabel_area(ui.Label(name='regUserLabel'), 'regUserLabel', self.DEVICE))
dock(self.regUserLabel).top_left(self.main_content, -At.TIGHT)
at(self.regUserLabel).top = at(self.checkCloseButton).bottom
self.showSetting = Action(
set_menuOptions('Action', 'showSetting', self.DEVICE), self.settingBarcodeScannerAPPSwitcher__ACTION_Action,
image=SymbolImage('gear'),
)
self.hideSetting = Action(
set_menuOptions('Action', 'hideSetting', self.DEVICE), self.settingBarcodeScannerAPPSwitcher__ACTION_Action,
image=SymbolImage('gear'),
)
self.hideSetting.selected = True
set_menu(self.sidebarRegistrationButton, [
self.showSetting,
self.hideSetting,
], long_press=True)
self.registration = getView_area('StartPage', get_area('StartPage', self.DEVICE))
fill_with(
self.registration
).from_top(self.content_area)
welcomeLabel = size_to_fit(getLabel_area(ui.Label(name='welcomeLabel'), 'welcomeLabel', self.DEVICE))
dock(welcomeLabel).top_center(self.registration)
at(welcomeLabel).top = at(self.regUserLabel).bottom
welcomeTextView = getTextView_area(ui.TextView(name='welcomeTextView'), 'welcomeTextView', self.DEVICE)
welcomeTextView.width = (self.registration.width - (At.gap * 2))
welcomeTextView.size_to_fit()
dock(welcomeTextView).center(self.registration)
serverStatusInfoLabel = size_to_fit(getLabel_area(ui.Label(name='serverStatusInfoLabel'), 'serverStatusInfoLabel', self.DEVICE))
dock(serverStatusInfoLabel).top_left(self.registration, At.TIGHT)
at(serverStatusInfoLabel).top = at(welcomeTextView).bottom
serverStatusLabel = getLabel_area(ui.Label(name='serverStatusLabel'), 'serverStatusLabel', self.DEVICE)
attach(serverStatusLabel).right_of(serverStatusInfoLabel)
serverUpdateStatusInfoLabel = size_to_fit(getLabel_area(ui.Label(name='serverUpdateStatusInfoLabel'), 'serverUpdateStatusInfoLabel', self.DEVICE))
dock(serverUpdateStatusInfoLabel).top_left(self.registration, At.TIGHT)
at(serverUpdateStatusInfoLabel).top = at(serverStatusInfoLabel).bottom
self.serverUpdateStatusLabel = getLabel_area(ui.Label(name='serverUpdateStatusLabel'), 'serverUpdateStatusLabel', self.DEVICE)
attach(self.serverUpdateStatusLabel).right_of(serverUpdateStatusInfoLabel)
appVersionsInfoLabel = size_to_fit(getLabel_area(ui.Label(name='appVersionsInfoLabel'), 'appVersionsInfoLabel', self.DEVICE))
dock(appVersionsInfoLabel).top_left(self.registration, At.TIGHT)
at(appVersionsInfoLabel).top = at(serverUpdateStatusInfoLabel).bottom
self.appVersionsLabel = getLabel_areaContent(ui.Label(name='appVersionsLabel'), f'{appVersion} - {appBuild}', 'appVersionsLabel', self.DEVICE)
attach(self.appVersionsLabel).right_of(appVersionsInfoLabel)
serverVersionsInfoLabel = size_to_fit(getLabel_area(ui.Label(name='serverVersionsInfoLabel'), 'serverVersionsInfoLabel', self.DEVICE))
dock(serverVersionsInfoLabel).top_left(self.registration, At.TIGHT)
at(serverVersionsInfoLabel).top = at(appVersionsInfoLabel).bottom
self.serverVersionsLabel = getLabel_area(ui.Label(name='serverVersionsLabel'), 'serverVersionsLabel', self.DEVICE)
attach(self.serverVersionsLabel).right_of(serverVersionsInfoLabel)
selectedDatabaseInfoLabel = size_to_fit(getLabel_area(ui.Label(name='selectedDatabaseInfoLabel'), 'selectedDatabaseInfoLabel', self.DEVICE))
dock(selectedDatabaseInfoLabel).top_left(self.registration, At.TIGHT)
at(selectedDatabaseInfoLabel).top = at(serverVersionsInfoLabel).bottom
selectedDatabaseLabel = getLabel_areaContent(ui.Label(name='selectedDatabaseLabel'), self.TABLE_SCHEMA, 'selectedDatabaseLabel', self.DEVICE)
attach(selectedDatabaseLabel).right_of(selectedDatabaseInfoLabel)
self.appVersionsLabel.x = self.serverVersionsLabel.x
serverStatusLabel.x = self.serverVersionsLabel.x
selectedDatabaseLabel.x = self.serverVersionsLabel.x
self.serverUpdateStatusLabel.x = self.serverVersionsLabel.x
# Angaben der Konfigurationsdateien
self.configurationsFile__DEFAULT = 'config.default'
self.configurationsFile__USER = 'config.user'
self.configurationsFile__FOLDER = 'Konfigurationsdatei'
# Angaben des Barcode Scanner Ordners
self.mainDirApplication = '03_Barcode_Application'
self.subDirApplication = '2021_08_14 -- outVersion'
# Deaktiviert das 2 Finger swipen (Schließen Funktion)
disable_swipe_to_close(self.superview)
# Sperrung des Ruhemoduses des iPhones
on_main_thread(console.set_idle_timer_disabled)(True)
Das ganze Projekt hatte ich vor 2 Jahren begonnen und ist natürlich immer wieder gewachsen sodass weitere Seiten dazugekommen sind etc.
Ich bin jetzt nicht der Top Programmierer das war und ist mein erstes Großes Projekt welches immer noch angepasst etc. wird...
meine Frage ist eben wie man das besser gestalten kann bzw. ob man gewissen Code in mehrere Dateien auslagern kann und Darf....
Das Code doppelt ist weis ich jetzt schon ohne nachschauen zu müssen weil ich eben für jede Seite eine eigene Nav. bar erstellt habe welches man natürlich über eine Erledigen könnte... bevor ich das nun aber angehen wollte wollte ich eben wissen worauf ich noch achten sollte was man anpassen Müsste und sollte.
wie gesagt das ganze läuft auf MacOS und IOS über Pythonista.
danke schon einmal für die Hilfen