Is that the right approach for modelling this shape?

I'm a beginner with Blender and I'm doing some basic hard-surface modelling exercises.

I am struggling with understanding the right approach to take. The rules of exercise are:

• do not use booleans or crease (to make the shape exportable)
• the end result should be as simple as possible
• there can't be any visible "pinching"

Here is the target shape:

I am applying a subsurface modifier to create the round extrusions, but at the same time, the cubic extrusions need to remain sharp. To do so, I am using edge loops.

But unless the flow of edge loops is controlled and kept around the shape to "sharpen", they would propagate to the rest of the object and "deform" the cylindrical extrusions.

To avoid that, I am creating some "complex" topology around the cubic extrusions to make sure that the edge-loops stay around these extrusions (basically they stay in the right corner of the overall object).

Here is what I mean by "complex topology" to redirect the edge-loops:

I can't help but think that there must be a better way to achieve that.

How would you solve this problem?

Here is the model in Sketchfab: https://skfb.ly/6URp6

• What you are doing is a great exercise, avoid booleans and understand how to transition from sharp to curve, then you're on your way to happy and trouble free modeling habits. In this case there are still too many unnecessary vertices with no apparent purpose, specifically in areas that are flat and don't need extra subdivisions or supporting loops, but creases. – susu Sep 9 '20 at 4:08
• blender.stackexchange.com/questions/734/… – susu Sep 9 '20 at 4:15
• Worth exploring also, the many pages of this site: topology-guides.tumblr.com – susu Sep 9 '20 at 4:16
• Counter-intuitive, but it usually works best: Model the holes first, then build the cube around them. – Frederik Steinmetz Sep 9 '20 at 6:23
• I think giving an answer will break the exercise... but I would advice two things. Don't use the Sketchfab model as starting point. Start with low poly perimeters (I mean each part has its perimeter) but consider a step further (ie. starting with 8 vertices should do but consider 16 instead). That will allow to create support edges and lower the level of subdivision surface needed at the end. – lemon Sep 9 '20 at 7:13