TGViewer
adelf on programming adelf on programming @adelf_on_programming · 1.57K subscribers
Post #132 3.4K
В Java Swing есть много разных способов размещать компоненты внутри окошек. В давние стародавние времена я выбрал некий GroupLayout, который давал максимальный контроль. Потом я узнал, что его не рекомендуется использовать вручную и он вообще для этих редакторов, где мышкой интерфейс набрасывают, ну да ладно. До сих пор использую его, но там, чтобы указать как именно себя должен вести компонент, надо указать в правильном порядке комбинацию из трех параметров.

Логика какая-то наверняка в этом всем есть, но я никогда ее не осознаю и я никак не могу понять по этим параметрам как компонент будет отображаться: растянутым на всю ширину(высоту), средненько или будет занимать минимальную ширину(высоту). Поэтому давно еще создал методы-расширения, чтобы было более понятно. addComponentShrink - этот будет ужат до минимума. addComponentNotResize - этот будет нормально отображаться, но не будет растягиваться. Теперь решил подчистить весь код, чтобы не осталось ни одного вызова с этими тремя параметрами.

Вывод 1: далеко не всегда понятно, что код, который вот щас по гайдам из интернета сделан, будет непонятен при прочтении в будущем. Надо постоянно следить и скрывать такую непонятную логику в методах с нормальным названием. На картинке видна разница.

Вывод 2: методы-расширения весьма полезны в таких вот Fluent-вызовах методов, в которых return this. Поэтому я все больше и больше начинаю уважать ларавелевский ::macro(), который позволяет делать тоже самое в PHP, в котором нет поддержки методов-расширений.
  • 👍 18
More from @adelf_on_programming
  1. Sep 10, 2026Новый дивный мир Пришел issue, в котором юзер жалуется на какое-то несоответствие логики.…
  2. Aug 11, 2026Podlodka #489 – Laravel Laravel любят за скорость разработки, ругают за магию и регулярно…
  3. Jun 4, 2026Под прошлым постом развернулась дискуссия, которая в очередной раз показала, что в програм…
  4. Jun 1, 2026Часто слышу мнение в стиле "неймспейс это тоже часть имени класса. Используйте его" И, как…
  5. Apr 20, 2026Хранение дефолтных значений Для новой фичи мне нужно хранить токен Sentry и домен, где это…
  6. Jan 18, 2026Исследую сейчас исходники Livewire4. Прекрасный пример, когда две совсем разные логики пыт…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →