Design tip: Top-level launch files should be short, and consist of include's to other files corresponding to subcomponents of the application, and commonly changed ROS parameters.
Design tip: Be aware of the tradeoffs when deciding how many top-level launch files your application requires.
Design tip: Use the env substitution argument to allow parts of a launch file to depend on environment variables.
Design tip: Use topic remapping when a given type of information is published on different topics in different situations.
Design tip: Yaml files allow parameters with complex types, nested namespaces of parameters, and reusing the same parameter values in multiple places.
Design tip: To modify a "top-level" aspect of an application, copy the top level launch file and change the portions you need.
Design tip: To modify a deeply nested parameter in a tree of launch files which you cannot change, use roslaunch's parameter overriding semantics.
Design tip: If you can modify the original launch file, it's often preferable to use roslaunch arguments rather than parameter overriding or copying roslaunch files.